"其中線程線程1-4先占滿了核心線程和最大線程數(shù)量,然后4、5線程進入等待隊列,7-10線程被直接忽略拒絕執(zhí)行,等1-4線程中有線程執(zhí)行完后通知4、5線程繼續(xù)執(zhí)行。"
這一段用詞不太明確,容易誤導新手,事實上應該是:
1,由于線程預啟動,首先創(chuàng)建了1,2號線程,然后task1,task2被執(zhí)行;
2,但任務提交沒有結束,此時任務task3,task6到達發(fā)現(xiàn)核心線程已經(jīng)滿了,進入等待隊列;
3,等待隊列滿后創(chuàng)建任務線程3,4執(zhí)行任務task3,task6,同時task4,task5進入隊列;
4,此時創(chuàng)建線程數(shù)(4)等于最大線程數(shù),且隊列已滿,所以7,8,9,10任務被拒絕;
5,任務執(zhí)行完畢后回頭來執(zhí)行task4,task5,隊列清空。
線程池之ThreadPoolExecutor使用ThreadPoolExecutor提供了四個構造方法: 我們以最后一個構造方法(參數(shù)最多的那個),對其參數(shù)進行解釋: 如果對這些參數(shù)作用有疑惑的請看 ThreadPoolE...