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

Java 並發編程深度解析:ThreadPoolExecutor 核心參數、飽和策略、阻塞隊列與 Executors 工廠方法

     編輯:Java 綜合教學

ThreadPoolExecutor 七大核心參數

new ThreadPoolExecutor(
    corePoolSize,      // 核心線程數
    maximumPoolSize,   // 最大線程數
    keepAliveTime,     // 非核心線程閒置存活時間
    unit,              // 時間單位
    workQueue,         // 任務阻塞隊列
    threadFactory,     // 線程工廠
    handler            // 拒絕策略
);

任務提交處理流程

  1. 線程數 < corePoolSize → 建立核心線程執行。
  2. 線程數 ≥ corePoolSize → 任務入隊 workQueue。
  3. 隊列滿 → 線程數 < maximumPoolSize → 建立非核心線程執行。
  4. 線程數 ≥ maximumPoolSize → 觸發 RejectedExecutionHandler 拒絕策略。

ThreadPoolExecutor 執行流程圖

四種內建拒絕策略

策略行為
AbortPolicy (預設)拋出 RejectedExecutionException
CallerRunsPolicy由調用者線程執行任務
DiscardOldestPolicy丟棄隊列最舊任務,嘗試重新提交
DiscardPolicy直接丟棄,不拋異常

可自行實作 RejectedExecutionHandler 介面自定義策略(如記錄日誌、持久化)。

常用阻塞隊列對比

隊列特性適用場景
ArrayBlockingQueue有界陣列、FIFO、單鎖固定大小、公平性要求高
LinkedBlockingQueue鏈表、FIFO、雙鎖 (put/take)、可無界高吞吐、Executors.newFixedThreadPool 預設
PriorityBlockingQueue優先級排序、無界任務需按優先級執行
DelayQueue延遲獲取、無界、基於 PriorityQueue定時任務、快取過期清理
SynchronousQueue不儲存元素、直接移交、公平/非公平Executors.newCachedThreadPool 預設、生產消費速度匹配
LinkedTransferQueue實作 TransferQueue、可選直接移交高並發生產消費

Executors 工廠方法快速建立線程池

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