J2SE 5.0 引入了 java.util.concurrent 套件,為 Java 多執行緒開發帶來了革命性的變化。這個並發工具包提供了高效能、靈活的執行緒池、非同步任務執行框架,以及針對並發存取優化的集合類別,極大地簡化了多執行緒程式的設計與維護。
Executor 介面定義了 execute(Runnable command) 方法,將任務提交與執行機制解耦。開發者無需顯式建立執行緒,即可實現同步或非同步執行:
// 同步執行範例
class MySynExecutor implements Executor {
public void execute(Runnable r) { r.run(); }
}
// 非同步執行範例
class MyASynExecutor implements Executor {
public void execute(Runnable r) { new Thread(r).start(); }
}
ExecutorService 擴充了 Executor,提供關閉、等待終止、提交可回傳結果任務等功能。透過 shutdown() 與 shutdownNow() 可優雅地管理執行緒池生命週期。
適合處理定期清理暫存檔、心跳檢測等週期性工作。範例:每 5 秒輸出一次「beep」。
Runnable beeper = () -> System.out.println("beep");
ScheduledFuture> handle = scheduler.scheduleAtFixedRate(beeper, 1, 5, TimeUnit.SECONDS);
解決了早期版本中 run() 回傳 void 無法獲取結果的痛點。Future 提供 isDone()、get()、cancel() 等方法;FutureTask 實作了 Future 介面,可包裝 Callable 或 Runnable。
核心參數包含:
JDK 1.5 提供多種線程安全集合:
ConcurrentHashMap:分段鎖設計,支援高並發讀寫CopyOnWriteArrayList / CopyOnWriteArraySet:寫時複製,適合讀多寫少場景,迭代器提供快照視圖進階同步器包含 Semaphore(訊號量)、CountDownLatch(倒數鎖)、CyclicBarrier(循環柵欄)、Exchanger(資料交換),適用於複雜協調場景。
J2SE 5.0 並發工具包將底層執行緒管理細節封裝為高階抽象,讓開發者專注於業務邏輯,顯著降低多執行緒開發難度與錯誤率。