Executor框架簡介
Executor框架的結構
Executor框架主要由3大部分組成:
- 任務: 包括被執行的任務需要實現的接口:Runable 接口、Callable接口;
- 任務的執行: 包括任務執行機制的核心接口Executor,以及繼承自Executor的ExecutorService接口。Executor框架有兩個關鍵類實現了ExecutorService接口:ThreadPoolExecutor 和 ScheduledThreadPoolExecutor、ForkJoinPool;
- 任務的異步計算結果: 包括Future接口和實現Future接口的FutureTask類、ForkJoinTask類。
Executor框架的成員介紹
1、Runnable接口 和 Callable接口
Runnable接口和Callable接口的實現類,都可以被ThreadPoolExecutor或Scheduled-
ThreadPoolExecutor執行。它們之間的區別是Runnable不會返回結果,而Callable可以返回結
果。
除了可以自己創建實現Callable接口的對象外,還可以使用工廠類Executors來把一個
Runnable包裝成一個Callable。
2、Executor、ExecutorService、AbstractExecutorService、ScheduledExecutorService
- Executor 接口: 是Executor框架的基礎,它將任務的提交與任務的執行分離開來。
- ExecutorService 接口: 擴展了Executor接口,提供了管理終止的方法(shutdown( ) ,etc),以及可為跟蹤一個或多個異步任務執行狀況而生成 Future 的方法。
- AbstractExecutorService 類: 提供 ExecutorService 執行方法的默認實現。
- ScheduledExecutorService 接口: 一個特殊的 ExecutorService,提供了 可安排在給定的延遲后運行或定期執行的命令。
3、ThreadPoolExecutor
ThreadPoolExecutor通常使用工廠類Executors來創建。Executors可以創建3種類型的ThreadPoolExecutor:SingleThreadExecutor、FixedThreadPool和CachedThreadPool。
以下是這三種線程池的應用場景說明:
- FixedThreadPool適用於為了滿足資源管理的需求,而需要限制當前線程數量的應用場景,它適用於負載比較重的服務器。
- SingleThreadExecutor適用於需要保證順序地執行各個任務;並且在任意時間點,不會有多個線程是活動的應用場景。
- CachedThreadPool是大小無界的線程池,適用於執行很多的短期異步任務的小程序,或者是負載較輕的服務器
4、ScheduledThreadPoolExecutor
ScheduledThreadPoolExecutor通常使用工廠類Executors來創建。Executors可以創建2種類
型的ScheduledThreadPoolExecutor,如下。
- ScheduledThreadPoolExecutor:包含若干個線程的ScheduledThreadPoolExecutor。
-
SingleThreadScheduledExecutor:只包含一個線程的ScheduledThreadPoolExecutor。