執行緒與多執行緒

antor發表於2024-08-11

1. 執行緒

1. 執行緒狀態

執行緒狀態分為5種 
new  
runable -> 分為 ready 和 running
阻塞
等待  -> 分為waiting 和 time_waiting
銷燬

1.2 執行緒數量配置

IO密集型 = CPU * 2
cpu密集型 = CPU + 1

2. 執行緒池

2.1 執行緒池核心引數

執行緒池一共7個核心引數,分別是核心執行緒數、最大執行緒數、存活時間、時間單位、執行緒工廠、拒絕策略和阻塞佇列

2.2 執行緒池任務流程

當執行緒池接收一個任務後,首先判斷當前執行緒狀態, 只有處於running 時,才會接收新任務
否則拋棄,然後判斷執行緒數是否小於核心執行緒數,小於建立執行緒並執行,否則判斷阻塞佇列是否滿了,
沒滿新增,滿了則判斷執行緒數是否小於最大執行緒數,小於新建執行緒執行任務,大於等於執行拒絕策略

2.3 拒絕策略

直接拋異常 about
直接丟棄 discard
丟棄老任務 disOldCard 
交由呼叫者處理 callRuns 
自定義策略,沒定義過

2.4 執行緒池狀態

執行緒池的狀態是由 ThreadPoolExeator 中的ctl 進行維護的,它的高三位是執行緒狀態,低29位是工作執行緒數
執行緒一共5種狀態,running、shutdown、stop、tidying 和銷燬
running 接受新任務,執行佇列任務
shutdown 不接受新任務,執行佇列任務
stop 不接受新任務,不執行佇列任務, 中斷當前任務
tidying 有效執行緒數為0
最後銷燬

相關文章