Java 通過 Executors 提供四種預置線程池,滿足不同並發需求。
ExecutorService es = Executors.newCachedThreadPool();
Runtime.getRuntime().availableProcessors() 或業務壓測確定。ExecutorService es = Executors.newFixedThreadPool(3);
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);
ExecutorService es = Executors.newSingleThreadExecutor();
C:\Program Files\Java\jdk1.8.0_xxx\bin\jconsole.exe
| 場景 | 推薦線程池 |
|---|---|
| 突發大量短任務 | CachedThreadPool |
| 固定並發度、長任務 | FixedThreadPool |
| 定時/周期調度 | ScheduledThreadPool |
| 串行化處理、線程安全 | SingleThreadExecutor |
生產環境建議自定義 ThreadPoolExecutor 精確控制核心/最大線程、隊列類型、拒絕策略、線程工廠等參數。