理解Callable介面

2021-10-07 19:11:04 字數 1118 閱讀 5559

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 乙個任務不能被反覆執行,如果想反覆執行,必須重新設定新任務 比...