execute –> addWorker –>runworker (getTask)
1. 線程池的工作線程通過Woker類實現(xiàn),在ReentrantLock鎖的保證下,把Woker實例插入到HashSet后,并啟動Woker中的線程。
2. 從Woker類的構(gòu)造方法實現(xiàn)可以發(fā)現(xiàn): 線程工廠在創(chuàng)建線程thread時,將Woker實例本身this作為參數(shù)傳入,當(dāng)執(zhí)行start方法啟動線程thread時,本質(zhì)是執(zhí)行了Worker的runWorker方法。
3. firstTask執(zhí)行完成之后,通過getTask方法從阻塞隊列中獲取等待的任務(wù),如果隊列中沒有任務(wù),getTask方法會被阻塞并掛起,不會占用cpu資源。