天天看點

Callable與Runable接口 submit與execute差別

execute(runnable x) 沒有傳回值。可以執行任務,但無法判斷任務是否成功完成。

submit(runnable x) 傳回一個future。可以用這個future來判斷任務是否成功完成。

在java5之後,任務分兩類:一類是實作了runnable接口的類,一類是實作了callable接口的類。

兩者都可以被executorservice執行

runnable任務沒有傳回值(見上面代碼),callable中的call()方法類似runnable的run()方法,就是前者有傳回值,後者沒有。

同樣,将runnable的對象傳遞給executorservice的submit方法,則該run方法自動在一個線程上執行,并且會傳回執行結果future對象,但是在該future對象上調用get方法,将傳回null。

當将一個callable的對象傳遞給executorservice的submit方法,則該call方法自動在一個線程上執行,并且會傳回執行結果future對象。

參考文章:

submit與execute差別

<a href="http://blog.csdn.net/ryantotti/article/details/6956175" target="_blank">http://blog.csdn.net/ryantotti/article/details/6956175</a>

callable與runable接口

<a href="http://blog.csdn.net/yuzhiboyi/article/details/7775266" target="_blank">http://blog.csdn.net/yuzhiboyi/article/details/7775266</a>