Runnable和Callable的區別:
(1)Runnable是自從java1.1就有了,而Callable是1.5之後才加上去的
(2)Callable規定的方法是call(),Runnable規定的方法是run()
(3)Callable的任務執行後可返回值,而Runnable的任務是不能返回值(是void)
(4)call方法可以拋出異常,run方法不可以
(5)運行Callable任務可以拿到一個Future對象,表示異步計算的結果。它提供了檢查計算是否完成的方法,以等待計算的完成,並檢索計算的結果。通過Future對象可以瞭解任務執行情況,可取消任務的執行,還可獲取執行結果。
(6)加入線程池運行,Runnable使用ExecutorService的execute方法,Callable使用submit方法。
Callable接口也是位於java.util.concurrent包中。Callable接口的定義爲:
Java代碼
public interface Callable
{
V call() throws Exception;
}