1、線程池原理
創(chuàng)建一個(gè)線程,需要一個(gè)Thread對(duì)象和一個(gè)Runable接口實(shí)例。每次都去new一個(gè)Thread對(duì)象是很耗費(fèi)時(shí)間的,而且不好管
理。線程池就是為了復(fù)用已存在的Thread對(duì)象,防止不停地創(chuàng)建Thread對(duì)象帶來的性能損耗。
2、線程池流程流程總的說明
線程池中會(huì)有一個(gè)HashSet,里面存放著Worker對(duì)象。這個(gè)Worker中會(huì)存有一個(gè)Thread對(duì)象,會(huì)使用這個(gè)thread執(zhí)行任務(wù)。
這個(gè)Worker對(duì)象的多少代表著線程池的線程容量,每個(gè)Worker會(huì)從BlockingQueue中獲取你的Runnable實(shí)例任務(wù),進(jìn)行執(zhí)行,
沒有的話,會(huì)阻塞在那里,直到獲取到隊(duì)列中的任務(wù)。
新建線程任務(wù)流程1、如果HashSet中的線程數(shù)量沒有達(dá)到核心線程數(shù)量,那么就會(huì)新創(chuàng)建一個(gè)Worker對(duì)象,直接執(zhí)行你的任務(wù)。
2、如果HashSet中的線程數(shù)量已經(jīng)達(dá)到核心的線程大小并且任務(wù)隊(duì)列沒有滿,不再創(chuàng)建這個(gè)Worker對(duì)象,會(huì)將你的任務(wù)放
到隊(duì)列中。
3、如果HashSet中的線程數(shù)量已經(jīng)達(dá)到核心的線程大小并且任務(wù)隊(duì)列滿了,那么就會(huì)創(chuàng)建Worker對(duì)象,直到達(dá)到最大線程
數(shù)量為止。
4、如果HashSet中的線程數(shù)量已經(jīng)達(dá)到最大線程大小,新來的任務(wù)就會(huì)被拒掉。
想了解更多相關(guān)資訊請(qǐng)關(guān)注java培訓(xùn)頻道-查看更多,了解相關(guān)專業(yè)課程信息您可在線咨詢也可免費(fèi)申請(qǐng)?jiān)囌n。關(guān)注賦能網(wǎng)了解更多:4008-569-579
本文鏈接:
本文章“Java學(xué)習(xí)小知識(shí)之線程池”已幫助 59 人
免責(zé)聲明:本信息由用戶發(fā)布,本站不承擔(dān)本信息引起的任何交易及知識(shí)產(chǎn)權(quán)侵權(quán)的法律責(zé)任!
本文由賦能網(wǎng) 整理發(fā)布。了解更多培訓(xùn)機(jī)構(gòu)》培訓(xùn)課程》學(xué)習(xí)資訊》課程優(yōu)惠》課程開班》學(xué)校地址等機(jī)構(gòu)信息,可以留下您的聯(lián)系方式,讓課程老師跟你詳細(xì)解答:
咨詢熱線:4008-569-579