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

Java 線程池實現對比:ExecutorService vs ThreadGroup 核心差異與選型

     編輯:Java 相關知識

爬蟲框架開發中對線程池的實戰對比,揭示 ExecutorService 與 ThreadGroup 的能力邊界。

ExecutorService 方案

ExecutorService pool = Executors.newFixedThreadPool(2);
pool.execute(new MyThread());
pool.execute(new MyThread());
// ...
pool.shutdown();

定位:任務執行容器,核心能力「提交-執行-關閉」。

ThreadGroup 方案

ThreadGroup tg = new ThreadGroup("My Group");
MyThread thrd = new MyThread(tg, "MyThread #1");
// 啟動後可監控:
tg.activeCount();           // 活躍線程數
tg.enumerate(threadsArray); // 遍歷所有線程
thrd.myStop();              // 自定義停止協議
tg.interrupt();             // 批量中斷

核心優勢對比

能力ExecutorServiceThreadGroup
任務提交/執行✓ 核心職責✗ 需自行管理
線程生命周期管理✓ 內建✗ 手動實現
活躍線程遍歷/計數✗ 無直接 API✓ activeCount()/enumerate()
批量中斷/停止✓ shutdownNow()✓ interrupt()
線程分組隔離✗✓ 天然分組
未捕獲異常處理✗ 需自定義✓ uncaughtException() 重寫

選型建議

  • 標準任務執行、需生命周期管理 → ExecutorService(JUC 標準)
  • 需精細監控線程狀態、分組隔離、自定義停止協議 → ThreadGroup
  • 現代替代:ThreadMXBean、CompletableFuture、StructuredTaskScope (JDK 21+)

原文來源:博客園

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