1. 程式人生 > >輕鬆理解-中高階java開發必知必會之 Callable和Runable

輕鬆理解-中高階java開發必知必會之 Callable和Runable

相對於Runable,Callable的出鏡率其實並不高,二者區別其實有限,下面是具體分析:

我們進行非同步執行的時候,如果需要知道執行的結果,就可以使用callable介面,並且可以通過Future類獲取到非同步執行的結果資訊。如果不關心執行的結果,直接使用runnable介面就可以了,因為它不返回結果,當然啦,callable也是可以的,我們不去獲取Future就可以了。

相同點:

兩者都是介面;(廢話)

兩者都可用來編寫多執行緒程式;

兩者都需要呼叫Thread.start()啟動執行緒;

 

不同點:

兩者最大的不同點是:實現Callable介面的任務執行緒能返回執行結果;而實現Runnable介面的任務執行緒不能返回結果;

Callable介面的call()方法允許丟擲異常;而Runnable介面的run()方法的異常只能在內部消化,不能繼續上拋;

 

注意點:

Callable介面支援返回執行結果,此時需要呼叫FutureTask.get()方法實現,此方法會阻塞主執行緒直到獲取‘將來’結果;當不呼叫此方法時,主執行緒不會阻塞!