Java四種線程池

Java通過Executors提供四種線程池挟秤,分別為:

newCachedThreadPool創(chuàng)建一個(gè)可緩存線程池,如果線程池長(zhǎng)度超過處理需要,可靈活回收空閑線程追迟,若無可回收,則新建線程骚腥。

newFixedThreadPool創(chuàng)建一個(gè)定長(zhǎng)線程池敦间,可控制線程最大并發(fā)數(shù),超出的線程會(huì)在隊(duì)列中等待束铭。

newScheduledThreadPool創(chuàng)建一個(gè)定長(zhǎng)線程池廓块,支持定時(shí)及周期性任務(wù)執(zhí)行。

newSingleThreadExecutor創(chuàng)建一個(gè)單線程化的線程池契沫,它只會(huì)用唯一的工作線程來執(zhí)行任務(wù)带猴,保證所有任務(wù)按照指定順序(FIFO, LIFO, 優(yōu)先級(jí))執(zhí)行。

(1)可緩存線程池 CachedThreadPool

ExecuterService exec = Executers.newCachedThreadPool(new CustomThreadFactory());

(2)定長(zhǎng)線程池 用的最多的線程池 FixedThreadPool

ExecuterService exec = Executers.newFixedThreadPool(3,new CustomThreadFactory()); //thread Num

(3)可調(diào)度線程池 ?ScheduledTreadPool

ScheduledExecuterService exec = Executers.newScheduledThreadPool(3,new CustomFactory());

(4)單線程化線程池 SingleThreadExecutor

ExecuterService exec = Executer.newSingleThreadExecutor(new CustomFactory());

測(cè)試類如下:

CustomTask.class:

public?class?CustomTask?implements?Runnable{

private?int?id= 0;

public?CustomTask(intid){

this.id= id;

}

@Override

publicvoidrun() {

//TODOAuto-generated method stub

System.out.println("時(shí)間:"+System.currentTimeMillis()+"? id="+id);

try{

Thread.sleep(1000);

}catch(InterruptedException e) {

//TODOAuto-generated catch block

e.printStackTrace();

}

}

}

CustomThreadFactory.class

public?class?CustomThreadFactory?implementsThreadFactory{

@Override

publicThread newThread(Runnable r) {

//TODOAuto-generated method stub

Thread t =newThread(r);

returnt;

}

}

TestMain.class

publicclassTesThread {

/**

*@paramargs

*/

publicstaticvoidmain(String[] args) {

//TODOAuto-generated method stub

//定長(zhǎng)線程池

//????????????testFixedThreadPool();

//????????????testCahedThreadPool();

//????????????testScheduledThreadPoolDelead();

//????????????testSchedulRate();

//????????????testSingleThreadPool();

}

/**

* 可緩存線程池埠褪,

*/

publicstaticvoidtestCahedThreadPool(){

ExecutorService exec = Executors.newCachedThreadPool(newCustomThreadFactory());

for(inti=0;i<10;i++){

exec.submit(newCustomTask(i));

}

exec.shutdown();

}

/**

* 定長(zhǎng)線程池浓利,超過數(shù)目挤庇,將排對(duì)等待

*

*/

public?static?void?testFixedThreadPool(){

ExecutorService exec = Executors.newFixedThreadPool(1,newCustomThreadFactory());

for(inti=0;i<5;i++){

exec.submit(newCustomTask(i));

}

exec.shutdown();

}

/**

* 調(diào)度線程池之延遲執(zhí)行線程池

*/

public?static?void?testScheduledThreadPoolDelead(){

ScheduledExecutorService exec = Executors.newScheduledThreadPool(3,newCustomThreadFactory());

for(inti=0;i<5;i++){

exec.schedule(newCustomTask(i), 3,TimeUnit.SECONDS);

}

//????????????exec.shutdown();

}

/**

* 循環(huán)調(diào)度線程

*/

public?static?void?testSchedulRate(){

Scheduled ExecutorService exec = Executors.newScheduledThreadPool(3,newCustomThreadFactory());

for(inti=0;i<5;i++){

exec.scheduleAtFixedRate(newCustomTask(i), 1, 5, TimeUnit.SECONDS);

}

exec.shutdown();

}

/**

* 單線程,線程池

*/

public?static?void?testSingleThreadPool(){

ExecutorService exec = Executors.newSingleThreadExecutor(newCustomThreadFactory());

for(inti=0;i<5;i++){

exec.submit(newCustomTask(i));

}

exec.shutdown();

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末贷掖,一起剝皮案震驚了整個(gè)濱河市嫡秕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌苹威,老刑警劉巖昆咽,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異牙甫,居然都是意外死亡掷酗,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門窟哺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來泻轰,“玉大人,你說我怎么就攤上這事且轨「∩” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵旋奢,是天一觀的道長(zhǎng)泳挥。 經(jīng)常有香客問我,道長(zhǎng)至朗,這世上最難降的妖魔是什么屉符? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮锹引,結(jié)果婚禮上矗钟,老公的妹妹穿的比我還像新娘。我一直安慰自己粤蝎,他們只是感情好真仲,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著初澎,像睡著了一般秸应。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上碑宴,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天软啼,我揣著相機(jī)與錄音,去河邊找鬼延柠。 笑死祸挪,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的贞间。 我是一名探鬼主播贿条,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼雹仿,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了整以?” 一聲冷哼從身側(cè)響起胧辽,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎公黑,沒想到半個(gè)月后邑商,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡凡蚜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年人断,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片朝蜘。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡恶迈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出谱醇,到底是詐尸還是另有隱情蝉绷,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布枣抱,位于F島的核電站,受9級(jí)特大地震影響辆床,放射性物質(zhì)發(fā)生泄漏佳晶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一讼载、第九天 我趴在偏房一處隱蔽的房頂上張望轿秧。 院中可真熱鬧,春花似錦咨堤、人聲如沸菇篡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽驱还。三九已至,卻和暖如春凸克,著一層夾襖步出監(jiān)牢的瞬間议蟆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工萎战, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留咐容,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓蚂维,卻偏偏與公主長(zhǎng)得像戳粒,于是被迫代替她去往敵國(guó)和親路狮。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 1蔚约、new Thread的弊端 執(zhí)行一個(gè)異步任務(wù)你還只是如下new Thread嗎奄妨? ``` new Thread...
    Jannonx閱讀 2,758評(píng)論 0 6
  • Java通過Executors提供四種線程池,分別為: newCachedThreadPool創(chuàng)建一個(gè)可緩存線程池...
    lucky_yaya閱讀 293評(píng)論 0 0
  • 1炊琉、new Thread的弊端執(zhí)行一個(gè)異步任務(wù)你還只是如下new Thread嗎展蒂? ExecutorService...
    Stringer閱讀 449評(píng)論 0 0
  • 路邊的煎餅小販一般都是先做好幾個(gè)煎餅還放著,有人買則直接交貨而不是現(xiàn)做苔咪,現(xiàn)做浪費(fèi)客人的時(shí)間锰悼,如果沒有現(xiàn)成的只有現(xiàn)做...
    else05閱讀 543評(píng)論 0 0
  • 我不是第一個(gè)健身者,也不是第一個(gè)學(xué)習(xí)者团赏,可能也不是第一個(gè)健身學(xué)習(xí)者箕般。 我只是一個(gè)開始奔跑的健身學(xué)習(xí)者。 作為李笑來...
    劉勇Lennon閱讀 322評(píng)論 0 0