CodeGym/Java Course/Module 3 a ɛto so abien/執行者:可執行對象

執行者:可執行對象

開放

6.1 可執行對象

所以我們得到了包裹的最大部分。它將描述用於運行異步任務並能夠通過 Future 和 Callable 接口獲取結果的接口,以及用於創建線程池的服務和工廠:ThreadPoolExecutor、ScheduledPoolExecutor、ForkJoinPool。

為了更好地理解,讓我們對接口和類進行一些分解。

6.2 可執行對象的實現

Future<V>是獲取異步操作結果的絕佳接口。這裡的關鍵方法是 get 方法,它會阻塞當前線程(有或沒有超時),直到另一個線程上的異步操作完成。還有其他方法可用於取消操作和檢查當前狀態。FutureTask 類通常用作實現。

RunnableFuture<V>- 如果 Future 是客戶端 API 的接口,那麼 RunnableFuture 接口已經用於啟動異步部分。run() 方法的成功完成結束異步操作並允許通過 get 方法檢索結果。

Callable<V>- 用於異步操作的 Runnable 接口的擴展模擬。允許您返回一個類型化的值並拋出一個已檢查的異常。即使此接口沒有 run() 方法,許多 java.util.concurrent 類也支持它和 Runnable。

FutureTask<V>— Future/RunnableFuture 接口的實現。異步操作以 Runnable 或 Callable 對象的形式作為構造函數之一的輸入。FutureTask 類本身設計為在工作線程中啟動,例如,通過 new Thread(task).start() 或通過 ThreadPoolExecutor。異步操作的結果通過 get(...) 方法檢索。

Delayed- 用於應該在未來開始的異步任務,以及在 DelayQueue 中。允許您設置異步操作開始前的時間。

ScheduledFuture<V>- 結合了 Future 和 Delayed 接口的標記接口。

RunnableScheduledFuture<V>- 結合了 RunnableFuture 和 ScheduledFuture 的接口。此外,您可以指定該任務是一次性任務還是應以指定頻率運行。

留言
  • 受歡迎
你必須登入才能留言
此頁面尚無留言