線程池核心參數(shù)
有7個(gè)核心參數(shù)
- 核心線程數(shù)
- 最大線程數(shù)
- 任務(wù)隊(duì)列
- 線程空閑存活時(shí)間
- 線程空閑存活時(shí)間的單位
- 線程創(chuàng)建工廠
- 拒絕策略
任務(wù)提交流程
往線程池中提交任務(wù)流程如下:
- 判斷線程池中線程數(shù)是否小于核心線程數(shù)偿渡,小于新建線程執(zhí)行任務(wù),否則進(jìn)入步驟2
- 判斷任務(wù)隊(duì)列是否滿了,沒(méi)滿任務(wù)添加到隊(duì)列中欠拾,否則進(jìn)入步驟3
-
判斷線程池中線程是是否小于最大線程數(shù),小于新建線程執(zhí)行任務(wù)茬末,否則按照拒絕策略拒絕任務(wù)
線程池狀態(tài)
線程池有5種狀態(tài):
- running(運(yùn)行):新建線程池后的狀態(tài)為running
- shutdown(關(guān)閉):調(diào)用shutdown方法后南片,不接受新的任務(wù),工作的線程繼續(xù)執(zhí)行巴席,把隊(duì)列中的任務(wù)執(zhí)行完成,變成tidying
- stop(停止):調(diào)用shutdownnow方法后诅需,不在接受新的任務(wù)漾唉,中斷正在工作的線程荧库,隊(duì)列中的任務(wù)不執(zhí)行,變成tidying
- tidying(整理)
-
terminated(終止):變成tidying狀態(tài)之后赵刑,內(nèi)部調(diào)用terminated方法
拒絕策略
有4種:
- 直接丟棄
- 直接拒絕分衫,拋異常
- 交給應(yīng)用線程執(zhí)行
- 丟棄隊(duì)列中最早的任務(wù),然后重新提交
線程池的數(shù)量怎么確定
看場(chǎng)景是cpu密集型還是io密集型
- cpu密集型:cpu核數(shù)
- io密集型:2倍cpu核數(shù)