Java Executor 框架核心用法總結。本站提醒廣大學習愛好者:此文章僅供參考,不一定能完全符合您的需求。以下是完整總結正文
本文實例講述了 Java 中 Executor 介面用法。分享給大家供參考。詳細以下:
- Executor 介面定義:
public interface Executor {
void execute(Runnable command);
}
- Executors 靜態工廠方法建立執行緒池:
a) newFixedThreadPool:固定長度執行緒池,達最大數不再增加,執行緒異常終止會補新。
b) newCachedThreadPool:可快取執行緒池,長度超過處理需求可回收閒置執行緒。
c) newSingleThreadPool:單一執行緒 executor。
d) newScheduledThreadPool:固定長度支援定時與週期性任務。類似 Timer,但 Timer 基於相對時間對系統時鐘敏感,ScheduledThreadPoolExecutor 只支援絕對時間。
- Timer 類使用總結比較:
1) Timer 單一執行緒執行所有任務,一個任務超時會影響其他任務時間精準度。
2) TimerTask 拋出 unchecked 異常會導致 Timer 行為不可預期。ScheduledThreadPoolExecutor 可完全取代 Timer。
3) 為了解決執行服務生命週期問題,ExecutorService 擴展了 Executor。執行緒池包含 running、shutting down、terminated 三種狀態。
- Callable 與 Future:
Runnable 無回傳值且不可拋出 checked 異常,Callable 是更好的抽象。Future 描述任務生命週期,提供取得結果、取消任務、檢查完成狀態等方法。
- CompletionService 整合了 Executor 和 BlockingQueue 功能,take 和 poll 可阻塞取得已完成任務。
希望本文所述對大家的 Java 程式設計有所幫助。