46.ThreadPoolExcutor接口

線程池狀態

ThreadPoolExcutor使用int高3位來表示線程池狀態,低29位表示線程數量

狀態高三位接收新任務處理阻塞隊列任務說明
RUNNING111YY
SHUTDOWN000NY不會接收新任務,但會處理阻塞隊列剩余任務,比較溫和,已經提交的任務都會執行。
STOP001NN會中斷正在執行的任務,并拋棄阻塞隊列任務,比較暴力。
TIDYING010任務全部執行完畢,活動線程為0即將進入終結
TERMINATED011終結狀態

從數字上比較:

TERMINATED > TIDYING > STOP > SHUTDOWN > RUNNING

RUNNING 111, 最高位1表示負數。

?問題

為啥將線程池的狀態和線程數量存在一個int類型的變量中?

存儲在一個原子變量ctl中,目的是將線程池狀態與線程個數合二為一,這樣就可以用一次cas原子操作進行賦值。

構造方法

corePoolSize 核心線程數目(最多保留的線程數)

maxmumPoolSize 最大線程數目

keepAliveTime 生存時間-針對救急線程

unit 時間單位-針對救急線程

workQueue 阻塞隊列

threadFactory 線程工廠-可以為線程創建時起好名字

handler 拒絕策略

最大線程數 = 核心線程數 + 救急線程數

執行流程:先給核心線程執行任務,然后再將線程放到阻塞隊列中,最后給救急線程執行任務,最后執行拒絕策略。

最開始線程池里是沒有線程的,屬于一種懶加載,只有有任務要執行的時候,才會創建線程。

救急線程與核心線程的區別:

救急線程是有存活時間的。

核心線程執行完任務會一直保留在線程池中。

拒絕策略:

AbortPolicy 讓調用者拋出RejectedExecutionException異常,默認策略。

CallerRunsPolicy 讓調用者運行任務。

DiscardPolicy 放棄本次任務。

DiscardOldestPolicy 放棄隊列中最早的任務,本任務取而代之。

這是jdk提供的這四種拒絕策略都實現了RejectedExecutionHandler接口:?

還有第三方框架提供的實現

1.Dubbo實現,拋出RejectedExecutionException異常之前會記錄日志,并dump線程棧信息,方便定位問題。

2.Netty實現,創建一個新線程來執行任務。

3.ActiveMQ的實現,帶超時等待60s嘗試放入隊列,類似之前自定義拒絕策略。

4.PinPoint的實現,使用了一個拒絕策略鏈,會逐一嘗試策略鏈中沒中拒絕策略。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/22046.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/22046.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/22046.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

15.1 測試-重要性與testing包

1. 測試的重要性 1.1 單元測試 單元測試是針對一小部分代碼進行獨立地測試。 單元測試的對象通常是單個函數或方法,而要測試的是它在接受給定的輸入后,能否產生符合預期的輸出。 單元測試的作用主要表現在以下兩個方面: 驗證程序的最小…

C++ STL-迭代器函數對象適配器

目錄 一.迭代器 二. 函數對象 三. 適配器 一.迭代器 是一種通用的指針類型,可以用來遍歷 STL 容器中的元素。 具有以下作用和意義: 提供一種通用的方式來訪問容器中的元素。允許對不同類型的容器進行統一的操作。增強了代碼的靈活性和可擴展性。 一…

The Best Toolkit 最好用的工具集

The Best Toolkit 工欲善其事,必先利其器,整理過往工作與生活中遇到的最好的工具軟件 PDF合并等 PDF24 Tools PDF查看器 SumatraPDF 可以使用黑色來查看,相對不傷眼睛,也有電子書相關的閱讀器 Kindle pdf裁邊工具 briss 軟件卸載…

【C++題解】1085 - 尋找雷劈數

問題:1085 - 尋找雷劈數 類型:for循環 題目描述: 把整數 3025 從中剪開分為 30 和 25 兩個數,此時再將這兩數之和平方,計算結果又等于原數。 (3025)(3025)55553025 ,這樣的數叫“雷劈數”。 求所有符合這…

Photoshop版本選擇及系統要求

1、ps2018cc/2020cc版本 適合新手,增加了很多智能化操作,非常方便好上手。 2020: 2、ps2015版本 cc2015版本不論是功能還是硬件上,都是不二選擇,適合于配置較低的電腦,該有的基本功能它都有。 3、2021/2…

std::numeric_limits::max和宏定義重復報錯問題

問題描述 今天在編譯Beckhoff ADS開源組件的時候發現編譯報錯&#xff0c;報錯代碼如下 long AdsDevice::ReadReqEx2(uint32_t group, uint32_t offset, size_t length, void* buffer, uint32_t* bytesRead) const {if (length > std::numeric_limits<uint32_t>::ma…

Algorand 的復興之路:改變游戲規則,打造 RWA 第一公鏈

TLDR 發布 AlgoKit 2.0&#xff0c;支持 Python 原生語言&#xff0c;打造開發者友好的開發環境&#xff0c;Algorand 的開發者社區規模迅速擴大。 升級共識激勵機制&#xff0c;用 ALGO 獎勵共識節點參與共識的執行&#xff0c;增加 ALGO 的應用場景&#xff0c;同時進一步確…

GB28181的主動、被動的含義

GB28181有點象視頻會議&#xff1a; 終端通過SIP登錄服務器。管理員點擊某個終端&#xff0c;進行視頻。 就是這個主動、被動沒有聽說。于是問了同事&#xff0c;他說&#xff1a; 主動被動是從服務器角度來看的。所謂被動&#xff0c;就是服務器開一個端口&#xff0c;被動接…

鋼結構乙級資質延期,企業如何降低經營風險

當企業面臨鋼結構乙級資質延期時&#xff0c;為了降低經營風險&#xff0c;可以采取以下措施&#xff1a; 1. 提前規劃與準備 資質延續規劃&#xff1a;在資質到期前&#xff0c;提前規劃資質延續的相關工作&#xff0c;包括準備所需材料、明確流程和時間節點等。 項目評估&…

js去重的幾種方式

在JavaScript中&#xff0c;有多種方式可以實現數組去重。以下是幾種常見的方式&#xff1a; 使用Set數據結構&#xff1a;使用Set可以快速實現數組去重&#xff0c;Set會自動排除重復的元素。例如&#xff1a; const arr [1, 2, 3, 3, 4, 4, 5]; const uniqueArr [...new S…

如何從官網下載 mysql 二進制安裝包

一.下載二進行包 1. 官網網址: https://www.mysql.com/ 如圖所示進入官網 2. 點擊 DOWNLOADS ,進入如下圖 在該頁面找到 MySQL Community (GPL) Downloads 點進去 如上圖頁面&#xff0c;找到 MySQL Community Server 在點進去 下載 linux 通用版 點擊最下面 Compressed …

(十四)統計學基礎練習題八(選擇題T351-400)

本文整理了統計學基礎知識相關的練習題&#xff0c;共50道&#xff0c;適用于想鞏固統計學基礎或備考的同學。來源&#xff1a;如荷學數據科學題庫&#xff08;技術專項-統計學三&#xff09;。序號之前的題請看往期文章。 351&#xff09; 352&#xff09; 353&#xff09; 3…

C++vector部分實現及感悟

myvector.h #pragma once #include<assert.h> #include<iostream> #include<vector> using namespace std; namespace bit {template<class T>//必須使用typename場景\template<typename T>與template<class T>一般情況下這兩個通用&#…

Jmeter實戰教程入門講解

前言 通過前面對Jmeter元件的講解&#xff0c;大家應該都知道常用元件的作用和使用了。編寫Jmeter腳本前我們需要知道Jmeter元件的執行順序&#xff0c;可以看看我這篇性能測試學習之路&#xff08;三&#xff09;—初識Jmeter來了解下。下面我將以工作中的一個簡單的實例帶大…

Flutter 中的 TableCell 小部件:全面指南

Flutter 中的 TableCell 小部件&#xff1a;全面指南 Flutter 是一個功能強大的 UI 框架&#xff0c;由 Google 開發&#xff0c;允許開發者使用 Dart 語言構建跨平臺的移動、Web 和桌面應用。在 Flutter 的豐富組件庫中&#xff0c;TableCell 是一個用于創建表格單元格的組件…

企業打款驗證API在Java、Python、PHP中的使用教程

隨著企業銀行賬號數量的增加和銀行間的連接方式不斷豐富&#xff0c;企業在進行資金交易時需要確保所填寫的收款方賬戶信息的準確性和合法性&#xff0c;以避免資金損失和風險。然而&#xff0c;由于銀行數量眾多、地域分布廣泛&#xff0c;不同銀行間的賬戶驗證機制和信息交互…

vue前端實現頁面禁止縮放 前端適配問題處理 前端項目多端適配解決方案

在前端項目中,如果一個系統頁面可以縮放可能會導致多種異常情況,這些異常情況涉及到頁面布局、元素尺寸、事件觸發、響應式設計和用戶體驗等方面。 1.布局錯亂:頁面元素在縮放后可能會出現錯位、重疊或部分隱藏的情況,導致頁面布局混亂,影響用戶對頁面內容的理解和操作。這…

【云原生】kubernetes中secret原理詳解與應用實戰

?? 歡迎大家來到景天科技苑?? &#x1f388;&#x1f388; 養成好習慣&#xff0c;先贊后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者簡介&#xff1a;景天科技苑 &#x1f3c6;《頭銜》&#xff1a;大廠架構師&#xff0c;華為云開發者社區專家博主&#xff0c;…

讀AI未來進行式筆記02深度偽造

1. 計算機視覺 1.1. 在人的六感之中&#xff0c;視覺是最重要的 1.1.1. 人類只要看上一眼視頻&#xff0c;就能瞬間在腦海中抓取并消化內容和信息 1.1.2. 人類能夠對事物進行廣義的理解和抽象的認知&#xff0c;即使同一物體在不同的角度…

聲量2024 | 內容創作者,該怎樣保護你的知識產權

點擊文末“閱讀原文”即可參與節目互動 剪輯、音頻 / 卷圈 運營 / SandLiu 卷圈 監制 / 姝琦 封面 / 姝琦Midjourney 產品統籌 / bobo 場地支持 / 阿那亞 聯合制作 / 聲量The Power of Voice 特別鳴謝 / 深夜談談播客網絡 本期節目錄制于第二屆「聲量The Power of Voic…