欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

java線程池實(shí)例代碼,Java線程池代碼

java開發(fā)中幾種常見的線程池

一:newCachedThreadPool

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),建水企業(yè)網(wǎng)站建設(shè),建水品牌網(wǎng)站建設(shè),網(wǎng)站定制,建水網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,建水網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

(1)緩存型池子,先查看池中有沒有以前建立的線程,如果有,就reuse,如果沒有,就建立一個(gè)新的線程加入池中;

(2)緩存型池子,通常用于執(zhí)行一些生存周期很短的異步型任務(wù);因此一些面向連接的daemon型server中用得不多;

(3)能reuse的線程,必須是timeout IDLE內(nèi)的池中線程,缺省timeout是60s,超過這個(gè)IDLE時(shí)長(zhǎng),線程實(shí)例將被終止及移出池。

(4)注意,放入CachedThreadPool的線程不必?fù)?dān)心其結(jié)束,超過TIMEOUT不活動(dòng),其會(huì)自動(dòng)被終止

二:newFixedThreadPool

(1)newFixedThreadPool與cacheThreadPool差不多,也是能reuse就用,但不能隨時(shí)建新的線程

(2)其獨(dú)特之處:任意時(shí)間點(diǎn),最多只能有固定數(shù)目的活動(dòng)線程存在,此時(shí)如果有新的線程要建立,只能放在另外的隊(duì)列中等待,直到當(dāng)前的線程中某個(gè)線程終止直接被移出池子

(3)和cacheThreadPool不同,F(xiàn)ixedThreadPool沒有IDLE機(jī)制(可能也有,但既然文檔沒提,肯定非常長(zhǎng),類似依賴上層的TCP或UDP IDLE機(jī)制之類的),所以FixedThreadPool多數(shù)針對(duì)一些很穩(wěn)定很固定的正規(guī)并發(fā)線程,多用于服務(wù)器

(4)從方法的源代碼看,cache池和fixed 池調(diào)用的是同一個(gè)底層池,只不過參數(shù)不同:

fixed池線程數(shù)固定,并且是0秒IDLE(無IDLE)

cache池線程數(shù)支持0-Integer.MAX_VALUE(顯然完全沒考慮主機(jī)的資源承受能力),60秒IDLE

三:ScheduledThreadPool

(1)調(diào)度型線程池

(2)這個(gè)池子里的線程可以按schedule依次delay執(zhí)行,或周期執(zhí)行

四:SingleThreadExecutor

(1)單例線程,任意時(shí)間池中只能有一個(gè)線程

(2)用的是和cache池和fixed池相同的底層池,但線程數(shù)目是1-1,0秒IDLE(無IDLE)

java線程池(一) 簡(jiǎn)述線程池的幾種使用方式

首先說明下java線程是如何實(shí)現(xiàn)線程重用的

1. 線程執(zhí)行完一個(gè)Runnable的run()方法后,不會(huì)被殺死

2. 當(dāng)線程被重用時(shí),這個(gè)線程會(huì)進(jìn)入新Runnable對(duì)象的run()方法12

java線程池由Executors提供的幾種靜態(tài)方法創(chuàng)建線程池。下面通過代碼片段簡(jiǎn)單介紹下線程池的幾種實(shí)現(xiàn)方式。后續(xù)會(huì)針對(duì)每個(gè)實(shí)現(xiàn)方式做詳細(xì)的說明

newFixedThreadPool

創(chuàng)建一個(gè)固定大小的線程池

添加的任務(wù)達(dá)到線程池的容量之后開始加入任務(wù)隊(duì)列開始線程重用總共開啟線程個(gè)數(shù)跟指定容量相同。

@Test

public void newFixedThreadPool() throws Exception {

ExecutorService executorService = Executors.newFixedThreadPool(1);

executorService = Executors.newFixedThreadPool(1, new ThreadFactoryBuilder().build());

RunThread run1 = new RunThread("run 1");

executorService.execute(run1);

executorService.shutdown();

}12345678

newSingleThreadExecutor

僅支持單線程順序處理任務(wù)

@Test

public void newSingleThreadExecutor() throws Exception {

ExecutorService executorService = Executors.newSingleThreadExecutor();

executorService = Executors.newSingleThreadExecutor(new ThreadFactoryBuilder().build());

executorService.execute(new RunThread("run 1"));

executorService.execute(new RunThread("run 2"));

executorService.shutdown();

}123456789

newCachedThreadPool

這種情況跟第一種的方式類似,不同的是這種情況線程池容量上線是Integer.MAX_VALUE 并且線程池開啟緩存60s

@Test

public void newCachedThreadPool() throws Exception {

ExecutorService executorService = Executors.newCachedThreadPool();

executorService = Executors.newCachedThreadPool(new ThreadFactoryBuilder().build());

executorService.execute(new RunThread("run 1"));

executorService.execute(new RunThread("run 2"));

executorService.shutdown();

}123456789

newWorkStealingPool

支持給定的并行級(jí)別,并且可以使用多個(gè)隊(duì)列來減少爭(zhēng)用。

@Test

public void newWorkStealingPool() throws Exception {

ExecutorService executorService = Executors.newWorkStealingPool();

executorService = Executors.newWorkStealingPool(1);

RunThread run1 = new RunThread("run 1");

executorService.execute(run1);

executorService.shutdown();

}123456789

newScheduledThreadPool

看到的現(xiàn)象和第一種相同,也是在線程池滿之前是新建線程,然后開始進(jìn)入任務(wù)隊(duì)列,進(jìn)行線程重用

支持定時(shí)周期執(zhí)行任務(wù)(還沒有看完)

@Test

public void newScheduledThreadPool() throws Exception {

ExecutorService executorService = Executors.newScheduledThreadPool(1);

executorService = Executors.newScheduledThreadPool(1, new ThreadFactoryBuilder().build());

executorService.execute(new RunThread("run 1"));

executorService.execute(new RunThread("run 2"));

executorService.shutdown();

}

java 線程池 executor怎么用

ExecutorService是個(gè)接口,如果你是用Executors靜態(tài)方法生產(chǎn)的實(shí)例,見具體實(shí)現(xiàn)。比如:Java代碼publicstaticExecutorServicenewFixedThreadPool(intnThreads,ThreadFactorythreadFactory){returnnewThreadPoolExecutor(nThreads,nThreads,0L,TimeUnit.MILLISECONDS,newLinkedBlockingQueue(),threadFactory);}那它是ThreadPoolExecutor的實(shí)例,你可以看它的方法,如getActiveCount(),getPoolSize()等。

名稱欄目:java線程池實(shí)例代碼,Java線程池代碼
URL標(biāo)題:http://chinadenli.net/article17/dsgiidj.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站搜索引擎優(yōu)化網(wǎng)站設(shè)計(jì)網(wǎng)站策劃域名注冊(cè)云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)