不想貼源碼,只想記一下它的實現(xiàn)思路
類中包含以下幾個重要的成員
Work 內(nèi)部類
關(guān)聯(lián)了一個線程, 可以理解為一條工作流水線,就是用來執(zhí)行具體工作的
works
工作線程列表,同時間開了多條工作流水線
workQueue
工作隊列,用來暫時收留沒來得及做的工作
corePoolSize
核心線程數(shù):線程數(shù)超過該值時,則把來不及的工作放入workQueue
maximumPoolSize
最大線程數(shù): workQueue放滿之后,則新增工作流水線,如線程數(shù)超過了該值,就得用RejectedExecutionHandler來處理了
注意事項
- 總線程數(shù)在小于corePoolSize時,每次都創(chuàng)建新的線程來執(zhí)行
- 線程執(zhí)行完目前的工作后,如果再無工作可做,依據(jù)allowCoreThreadTimeOut開關(guān),有可能阻塞在workQueue里,否則就銷毀了。