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