callable介面是另一種獲得執行緒的方法,在這之前,所知道的獲得執行緒的方法是:繼承thread類,實現runnable介面。
在這裡需要知道runnable介面和callable介面的區別
callable有返回值,runnable沒有返回值
callable拋異常,runnable不拋異常
落地方法不一樣,乙個是run,乙個是call
class
mythread1
implements
runnable
}class
mythread
implements
callable
}
這裡需要知道實現callable介面的返回值是和它的泛型一致的。
實現這個介面簡單,但是想要啟動這個執行緒的時候,就不好辦了,因為thread類的構造方法可以傳runnable介面,但是不可以傳callable介面,那麼該怎麼辦呢?
我們在runnable子介面中找到了乙個runnablefuture,有乙個類futuretask實現了runnablefuture介面。這個futuretask類的構造方法還需要傳乙個callable介面。
這樣就找到了乙個類同時和callable和runnable掛上鉤。
在給thread類傳遞runnable介面時,利用多型,向裡面傳遞了乙個runnable介面的子介面的實現類。
知道了這個介面,怎麼去理解callable介面呢
用乙個圖來展示
最後還有乙個需要注意的地方,當用兩個不同的執行緒,去呼叫同乙個futuretask物件,實現callable的類都只執行一遍。
Callable介面解析
public inte ce callable先看下runnable介面的定義 public inte ce runnablecallable的call 方法類似於runnable介面中run 方法,都定義任務要完成的工作,實現這兩個介面時要分別重寫這兩個方法,主要的不同之處是call 方法是有返回...
Callable和future介面詳解
runnbale封裝乙個非同步執行的任務,可以把它想象成乙個沒有任何引數和返回值的非同步方法。callable和runnable相似,但是它有返回值。callable介面是引數化的型別,只有乙個方法call public inte ce callable catch runtimeexception...
Juc入門之Callable介面
furure介面實現執行緒直接資料的互動 runnable介面不可以,因為runnable介面的run方法返回值是void callable實現的未來任務 1 未來任務的get 方法會阻塞主線程的執行 主線程需要得到未來任務的返回值 2 乙個任務不能被反覆執行,如果想反覆執行,必須重新設定新任務 比...