成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

線程池拒絕策略四大“送命題”:答錯一個,offer直接涼涼!

開發 前端
當線程池的核心線程數、最大線程、任務隊列都滿的情況下,又來了新的任務時,線程池執行的行為被稱之為線程池的拒絕策略。

線程池的拒絕策略是指,當線程池無法承載更多任務時執行的行為。也就是當線程池的核心線程數、最大線程、任務隊列都滿的情況下,又來了新的任務時,線程池執行的行為被稱之為線程池的拒絕策略。

線程池的執行流程如下:

1.內置拒絕策略

在 Java 中,線程池內置了以下四種拒絕策略(Rejected Execution Policy)。

(1)AbortPolicy(中止策略)

  • 行為默認拒絕策略,直接拋出 RejectedExecutionException 異常。
  • 特點:強制調用方處理任務被拒絕的情況。
  • 適用場景:對任務丟失不敏感的場景。如果對丟失敏感需結合異常捕獲機制處理(記錄信息并告警)。

示例代碼:

new ThreadPoolExecutor(..., new ThreadPoolExecutor.AbortPolicy());

(2)CallerRunsPolicy(調用者運行策略)

  • 行為:將任務退回給提交任務的線程(即調用 execute() 的線程),由該線程直接執行任務。
  • 特點:變相降低任務提交速度,避免線程池過載。
  • 適用場景:希望任務最終被處理,且能承受一定延遲(如日志記錄)。

示例效果:

// 假設線程池已滿,主線程提交任務時會直接執行該任務
executor.execute(task);  // 主線程執行 task

(3)DiscardPolicy(丟棄策略)

  • 行為:靜默丟棄被拒絕的任務,不拋出異常,也不執行任務。
  • 特點:無感知丟棄,可能導致數據丟失。
  • 適用場景:允許任務丟失的非關鍵場景(如實時監控數據采樣)。

示例代碼:

new ThreadPoolExecutor(..., new ThreadPoolExecutor.DiscardPolicy());

(4)DiscardOldestPolicy(丟棄最舊任務策略)

  • 行為:丟棄工作隊列中等待時間最長的任務(即隊列頭部的任務),然后重新嘗試提交當前任務。
  • 特點:優先處理新任務,但可能丟失重要舊任務。
  • 適用場景:適合處理時效性較強的任務(如消息推送,新任務優先級更高)。

示例代碼:

new ThreadPoolExecutor(..., new ThreadPoolExecutor.DiscardOldestPolicy());

2.自定義拒絕策略

除了以上四種內置拒絕策略之外,程序中還可以通過實現 RejectedExecutionHandler 接口實現自定義策略:

public class CustomRejectionPolicy implements RejectedExecutionHandler {
    @Override
    public void rejectedExecution(Runnable task, ThreadPoolExecutor executor) {
        // 自定義邏輯(如記錄日志、持久化任務、重試等)
        System.out.println("Task rejected: " + task);
        // 保存任務信息
        // 通知相關負責人
    }
}

// 使用自定義策略
ThreadPoolExecutor executor = new ThreadPoolExecutor(
    corePoolSize, maxPoolSize, keepAliveTime, unit, workQueue, new CustomRejectionPolicy()
);

小結

策略

優點

缺點

適用場景

AbortPolicy

默認拒絕策略,報錯提示

需處理異常,增加代碼復雜度

任務丟失不敏感的場景

CallerRunsPolicy

任務一定執行

可能阻塞主線程,影響響應速度

非實時任務,允許延遲處理(如日志)

DiscardPolicy

簡單高效,無額外開銷

數據丟失風險高

可容忍數據丟失的場景(如監控采樣)

DiscardOldestPolicy

優先處理新任務

可能丟失重要舊任務

時效性強的任務(如實時消息推送)

CustomRejectionPolicy

靈活

實現復雜

通常用于生產環境,先保存任務信息,再報警提示負責人

責任編輯:姜華 來源: 磊哥和Java
相關推薦

2020-02-18 14:25:51

Java線程池拒絕策略

2020-11-25 11:33:47

Java線程技術

2009-10-22 10:06:54

CLR線程池教程

2020-07-08 12:05:55

Java線程池策略

2024-10-09 15:58:02

2014-04-29 10:56:23

物聯網IoT

2021-11-27 05:00:43

線程邏輯地址

2022-03-09 09:43:01

工具類線程項目

2011-03-04 13:17:33

2022-08-22 09:45:34

自動駕駛

2015-07-17 09:50:16

Carthage優劣比較

2025-04-11 07:50:00

虛析構函數C++開發

2012-01-19 19:00:50

2024-11-11 17:27:45

2015-11-12 18:09:10

2024-01-26 06:06:26

單體微服務容器化

2020-10-27 13:24:35

線程池系統模型

2018-11-07 13:00:30

機器學習深度學習集成學習

2014-10-22 15:22:55

大數據云安全

2011-03-21 09:01:49

CSS框架
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天堂久久av | 97日日碰人人模人人澡分享吧 | 亚洲一区二区三区福利 | 日韩精品在线一区 | 亚洲a在线视频 | 观看毛片| 一区二区三区视频免费看 | 精品欧美一区二区精品久久 | 成人精品鲁一区一区二区 | 欧美一区二区三区视频在线播放 | 国产亚洲精品久久久久久豆腐 | 欧美黄视频 | 在线免费观看黄色av | 国产亚洲欧美另类一区二区三区 | 国产精品一级在线观看 | 亚洲欧美日韩在线不卡 | 久久精品亚洲欧美日韩精品中文字幕 | 欧美国产日韩在线观看 | 美女久久 | www.久久 | 中文字幕在线一区二区三区 | 在线观看av网站永久 | 久久久九九九九 | 日本一区二区电影 | 97色综合 | 一级黄a视频 | 久久久成人免费一区二区 | 在线一区二区三区 | 国产目拍亚洲精品99久久精品 | 玖玖精品 | 红桃视频一区二区三区免费 | 欧美日韩亚洲一区 | 精品亚洲一区二区三区四区五区高 | 国产精品美女久久久久久免费 | 三级黄色网址 | 国产精品久久久乱弄 | 久久精品二区 | 一区二区视频在线观看 | 中文字幕av网站 | 日韩精品一区二区三区视频播放 | 中文字幕在线观看一区 |