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>