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