首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 四種線程池詳解:Cached、Fixed、Scheduled、SingleThreadExecutor 使用場景與代碼示例

     編輯:Java 綜合教學

Executors 四大線程池工廠方法全解析

Java 通過 Executors 提供四種預置線程池,滿足不同並發需求。

1. newCachedThreadPool - 可緩存線程池

  • 特點:無上限,空閒線程 60 秒回收,新任務來臨無可用線程則創建新線程。
  • 適用:大量短生命周期異步任務。
ExecutorService es = Executors.newCachedThreadPool();

2. newFixedThreadPool - 定長線程池

  • 特點:固定核心線程數,超出任務進入無界隊列等待。
  • 適用:長期運行、需控制並發度的任務(如資源受限環境)。
  • 建議大小:Runtime.getRuntime().availableProcessors() 或業務壓測確定。
ExecutorService es = Executors.newFixedThreadPool(3);

3. newScheduledThreadPool - 定時/周期任務線程池

  • 支持延遲執行、定時重複執行。
ScheduledExecutorService ses = Executors.newScheduledThreadPool(2);
// 延遲 3 秒執行一次
ses.schedule(() -> System.out.println("delay 3s"), 3, TimeUnit.SECONDS);
// 延遲 1 秒後,每 3 秒執行一次
ses.scheduleAtFixedRate(() -> System.out.println("periodic"), 1, 3, TimeUnit.SECONDS);

4. newSingleThreadExecutor - 單線程化線程池

  • 唯一工作線程,任務按提交順序 (FIFO) 串行執行,保證線程安全無需同步。
  • 適用:順序處理、避免並發衝突的場景。
ExecutorService es = Executors.newSingleThreadExecutor();

監控線程池狀態:JConsole

  1. 運行 C:\Program Files\Java\jdk1.8.0_xxx\bin\jconsole.exe
  2. 2. 連接目標進程,查看「線程」標籤:活動線程數、峰值、死鎖檢測。

JConsole監控

總結選型建議

場景推薦線程池
突發大量短任務CachedThreadPool
固定並發度、長任務FixedThreadPool
定時/周期調度ScheduledThreadPool
串行化處理、線程安全SingleThreadExecutor

生產環境建議自定義 ThreadPoolExecutor 精確控制核心/最大線程、隊列類型、拒絕策略、線程工廠等參數。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved