耐心是一切聰明才智的基礎(chǔ)。
什么是線程池? 為什么要使用它?
-
線程復(fù)用
避免線程的創(chuàng)建銷毀的系統(tǒng)開(kāi)銷 - 線程數(shù)量控制 避免線程不斷膨脹 導(dǎo)致系統(tǒng)崩潰
- 任務(wù)管理 任務(wù) 異步執(zhí)行
核心參數(shù)
-
核心線程數(shù)
prestartAllCoreThreads 可以在初始化時(shí)候全部創(chuàng)建。 -
最大線程數(shù)
和核心數(shù)一致 時(shí)線程數(shù)量固定 存活時(shí)間沒(méi)有意義 閑置線程存活時(shí)間
時(shí)間單位
-
線程隊(duì)列
-
直接隊(duì)列
SynchronousQueue 跟沒(méi)有一樣课幕。。 -
無(wú)限隊(duì)列
LinkedBlockingQueue 可指定也可不指定五垮。 -
有限隊(duì)列
ArrayBlockingQueue 初始化指定大小乍惊。 -
延遲隊(duì)列
DelayQueue,根據(jù)aqs.reentranlock.condition實(shí)現(xiàn)的await,signal機(jī)制實(shí)現(xiàn)放仗。
-
線程工廠
-
拒絕策略
- 丟棄&異常(主線程停止)
- 丟棄&不拋異常
- 丟棄隊(duì)列中任務(wù)润绎,重試
- 重試,不斷重試
任務(wù)的執(zhí)行流程
有哪些狀態(tài)
http://www.reibang.com/p/c22fa33a4213
有意思的實(shí)現(xiàn)
- 一個(gè)變量代表多個(gè)意思
線程池 用線程安全atomicInteger ctl
來(lái)表示
線程池的狀態(tài) 以及 線程的數(shù)量
高3位保存runState
匙监,低29位保存workerCount