1.線程池ThreadPool的基本定義?

  線程池是一種多線程處理形式,處理過程中將任務(wù)添加到隊(duì)列,然后在創(chuàng)建線程后自動(dòng)啟動(dòng)這些任務(wù)。線程池線程都是后臺(tái)線程。每個(gè)線程都使用默認(rèn)的堆棧大小,以默認(rèn)的優(yōu)先級(jí)運(yùn)行,并處于多線程單元中。如果某個(gè)線程在托管代碼中空閑(如正在等待某個(gè)事件),則線程池將插入另一個(gè)輔助線程來使所有處理器保持繁忙。如果所有線程池線程都始終保持繁忙,但隊(duì)列中包含掛起的工作,則線程池將在一段時(shí)間后創(chuàng)建另一個(gè)輔助線程但線程的數(shù)目永遠(yuǎn)不會(huì)超過最大值。超過最大值的線程可以排隊(duì),但他們要等到其他線程完成后才啟動(dòng)。

2.線程池的背景及作用?

  線程池是用來解決多任務(wù)并發(fā),頻繁創(chuàng)建線程和銷毀線程導(dǎo)致資源的浪費(fèi)和效率低下的一種技術(shù)。類似于數(shù)據(jù)庫(kù)連接池,這種池化技術(shù)用于將部分資源重復(fù)利用,或者說是用已有的資源對(duì)多個(gè)任務(wù)進(jìn)行服務(wù)。線程池就是創(chuàng)建固定的線程數(shù)量,服務(wù)于并發(fā)的任務(wù),避免每一個(gè)任務(wù),系統(tǒng)都進(jìn)行線程的創(chuàng)建和銷毀,增加系統(tǒng)的負(fù)擔(dān),線程數(shù)量過多時(shí)會(huì)造成內(nèi)存溢出。

3.線程池的運(yùn)用場(chǎng)景:

  頻繁的任務(wù)創(chuàng)建,快速的任務(wù)響應(yīng),同等的任務(wù)優(yōu)先級(jí)。如果需要很長(zhǎng)時(shí)間才有一個(gè)任務(wù)需要執(zhí)行,那樣創(chuàng)建線程池就是浪費(fèi)資源,如果執(zhí)行一個(gè)任務(wù)需要幾個(gè)小時(shí),那這個(gè)任務(wù)在線程池中執(zhí)行一次就會(huì)阻塞大量的線程。任務(wù)的優(yōu)先級(jí)在線程池沒有作用,因?yàn)榫€程池的任務(wù)執(zhí)行順序是隊(duì)列。如果我們需要執(zhí)行的任務(wù)有輕重緩急,那么不建議使用線程池。

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式