多線程之Callable和Future

Callable

創建線程可以繼承Thread類,重寫run方法,也可以使用匿名內部類,也可實現Runnable接口,但是實現Runnable類,重寫run方法並沒有返回值。
從JDK1.5之後,java提供Callable接口,裏面只有一個call方法作爲線程執行體。實現Callable接口,重寫call方法就可以創建一個線程,與run方法相比,Call方法更強大。
→ call方法可以有返回值
→ call方法可以聲明拋出異常

但是有一個問題,Callable幾口是新增接口,不是Runnable接口的子接口,所以Callable對象不能直接作爲Thread的target。而且call是作爲線程執行體被調用的,那麼誰來獲取返回值呢?這就要用到了Future了

Future:

java5提供了Future接口來獲取call的返回值,
future是異步的,子線程在等待的時候,主線程不用等待,如果A需要B的執行結果,那麼A線程不需要等待B執行完畢後才能拿到結果
通過get方法獲取call方法中的返回值。這個方法使得必須等到子線程結束才能拿到返回值

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章