AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁(yè) > 科技  > 軟件

四種常見(jiàn)線程池的原理,你學(xué)會(huì)了嗎?

來(lái)源: 責(zé)編: 時(shí)間:2023-10-30 17:24:14 256觀看
導(dǎo)讀newFixedThreadPool (固定數(shù)目線程的線程池)newCachedThreadPool (可緩存線程的線程池)newSingleThreadExecutor (單線程的線程池)newScheduledThreadPool (定時(shí)及周期執(zhí)行的線程池)前三種線程池的構(gòu)造直接調(diào)用Thread

newFixedThreadPool (固定數(shù)目線程的線程池)NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

newCachedThreadPool (可緩存線程的線程池)NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

newSingleThreadExecutor (單線程的線程池)NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

newScheduledThreadPool (定時(shí)及周期執(zhí)行的線程池)NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

前三種線程池的構(gòu)造直接調(diào)用ThreadPoolExecutor的構(gòu)造方法。NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

newSingleThreadExecutor

NOM28資訊網(wǎng)——每日最新資訊28at.com

public static ExecutorService newSingleThreadExecutor(ThreadFactory threadFactory) {  return new FinalizableDelegatedExecutorService(new ThreadPoolExecutor(1, 1,0L,TimeUnit.MILLISECONDS,  	new LinkedBlockingQueue<Runnable>(),threadFactory));}

線程池特點(diǎn):NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

核心線程數(shù):1NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

最大線程數(shù):1NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

阻塞隊(duì)列是無(wú)界隊(duì)列LinkedBlockingQueue,可能會(huì)導(dǎo)致OOMNOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

keepAliveTime:0NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

工作流程:NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

1、提交任務(wù)NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

2、線程池是否有一條線程在,如果沒(méi)有,新建線程執(zhí)行任務(wù)NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

3、如果有,將任務(wù)加到阻塞隊(duì)列NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

4、當(dāng)前的唯一線程,從隊(duì)列取任務(wù),執(zhí)行完一個(gè),再繼續(xù),一個(gè)線程執(zhí)行任務(wù)NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

適用場(chǎng)景:NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

適用于串行執(zhí)行任務(wù)的場(chǎng)景,一個(gè)任務(wù)一個(gè)任務(wù)地執(zhí)行NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

newFixedThreadPool

NOM28資訊網(wǎng)——每日最新資訊28at.com

public static ExecutorService newFixedThreadPool(int nThreads, ThreadFactory threadFactory) {  return new ThreadPoolExecutor(nThreads, nThreads,0L,TimeUnit.MILLISECONDS,  	new LinkedBlockingQueue<Runnable>(), threadFactory);}

線程池特點(diǎn):NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

核心線程數(shù)和最大線程數(shù)大小一樣;NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

沒(méi)有所謂的非空閑時(shí)間,即keepAliveTime為0;NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

阻塞隊(duì)列為無(wú)界隊(duì)列LinkedBlockingQueue,可能會(huì)導(dǎo)致OOM;NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com


NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

工作流程:NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

1、提交任務(wù);NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

2、如果線程數(shù)少于核心線程,創(chuàng)建核心線程執(zhí)行任務(wù);NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

3、如果線程數(shù)等于核心線程,把任務(wù)添加到LinkedBlockingQueue阻塞隊(duì)列;NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

4、如果線程執(zhí)行完任務(wù),去阻塞隊(duì)列取任務(wù),繼續(xù)執(zhí)行。NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

適用場(chǎng)景:NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

FixedThreadPool適用于處理CPU密集型的任務(wù),確保CPU在長(zhǎng)期被工作線程使用的情況下,盡可能少的分配線程,即適用執(zhí)行長(zhǎng)期的任務(wù)。NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

newCachedThreadPool

NOM28資訊網(wǎng)——每日最新資訊28at.com

public static ExecutorService newCachedThreadPool(ThreadFactory threadFactory) {  return new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS,  	new SynchronousQueue<Runnable>(), threadFactory);}

線程池特點(diǎn):NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

核心線程數(shù)為0;NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

最大線程數(shù)為Integer.MAX_VALUE,即無(wú)限大,可能會(huì)因?yàn)闊o(wú)線創(chuàng)建線程,導(dǎo)致OOMNOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

阻塞隊(duì)列是SynchronousQueueNOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

非核心線程空閑存活時(shí)間為60sNOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)提交任務(wù)速度大于處理任務(wù)的速度時(shí),每次提交一個(gè)任務(wù),就必然會(huì)創(chuàng)建一個(gè)線程。NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

極端情況下會(huì)創(chuàng)建過(guò)多的線程,耗盡CPU和內(nèi)存資源。由于空閑60秒的線程會(huì)被終止,長(zhǎng)時(shí)間保持空閑的CachedThreadPool不會(huì)占用任何資源。NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com


NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

工作流程:NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

提交任務(wù);NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

因?yàn)闆](méi)有核心線程,所以任務(wù)會(huì)直接加到SynchronousQueue隊(duì)列;NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

判斷是否有空閑線程,如果有,就去取出任務(wù)執(zhí)行;NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

如果沒(méi)有空閑線程,就新建一個(gè)線程執(zhí)行;NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

執(zhí)行完任務(wù)的線程,還可以存活60s,如果在這期間接到任務(wù),就可以繼續(xù)活下去,否則被銷(xiāo)毀。NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

適用場(chǎng)景:NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

用于并發(fā)執(zhí)行大量短期的小任務(wù)。NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

newScheduleThreadPool

public ScheduledThreadPoolExecutor(int corePoolSize) {  super(corePoolSize, Integer.MAX_VALUE, 0, NANOSECONDS, new DelayedWorkQueue());}

線程池特點(diǎn):NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

最大線程數(shù)為Integer.MAX_VALUE,也有OOM風(fēng)險(xiǎn)NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

阻塞隊(duì)列是DelayedWorkQueueNOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

keepAliveTime為0NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

scheduleAtFixedRate():按某種速率周期執(zhí)行NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

scheduleWithFixedDelay():在某個(gè)延遲后執(zhí)行NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

工作機(jī)制:NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

線程從DelayQueue中獲取已到期的ScheduledFutureTask(DelayQueue.take())。到期任務(wù)是指ScheduledFutureTask的time大于等于當(dāng)前時(shí)間。NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

線程執(zhí)行這個(gè)ScheduleFutureTaskNOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

線程修改ScheduledFutureTask的time變量為下次將要被執(zhí)行的時(shí)間NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

線程把這個(gè)修改time之后的ScheduledFutureTask放回DelayQueue中(DelayQueue.add())。NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com


NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

使用場(chǎng)景:NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

周期性執(zhí)行任務(wù)的場(chǎng)景,需要限制線程數(shù)量的場(chǎng)景。NOM28資訊網(wǎng)——每日最新資訊28at.com

NOM28資訊網(wǎng)——每日最新資訊28at.com

使用無(wú)界隊(duì)列的線程池會(huì)導(dǎo)致什么問(wèn)題:NOM28資訊網(wǎng)——每日最新資訊28at.com

例如newFixedThreadPool使用了無(wú)界的阻塞隊(duì)列LinkedBlockingQueue,如果線程獲取一個(gè)任務(wù)后,任務(wù)的執(zhí)行時(shí)間比較長(zhǎng),會(huì)導(dǎo)致隊(duì)列的任務(wù)越積越多,導(dǎo)致機(jī)器內(nèi)存使用不停飆升,最終導(dǎo)致OOM。NOM28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-15863-0.html四種常見(jiàn)線程池的原理,你學(xué)會(huì)了嗎?

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 使用Frida在Windows中攔截C++函數(shù)

下一篇: Kubernetes使用OkHttp客戶(hù)端進(jìn)行網(wǎng)絡(luò)負(fù)載均衡

標(biāo)簽:
  • 熱門(mén)焦點(diǎn)
  • 6月iOS設(shè)備好評(píng)榜:第一蟬聯(lián)榜首近一年

    作為安兔兔各種榜單里變化最小的那個(gè),2023年6月的iOS好評(píng)榜和上個(gè)月相比沒(méi)有任何排名上的變化,僅僅是部分設(shè)備好評(píng)率的下降,長(zhǎng)年累月的用戶(hù)評(píng)價(jià)和逐漸退出市場(chǎng)的老款機(jī)器讓這
  • 5月iOS設(shè)備好評(píng)榜:iPhone 14僅排第43?

    來(lái)到新的一月,安兔兔的各個(gè)榜單又重新匯總了數(shù)據(jù),像安卓陣營(yíng)的榜單都有著比較大的變動(dòng),不過(guò)iOS由于設(shè)備的更新?lián)Q代并沒(méi)有那么快,所以相對(duì)來(lái)說(shuō)變化并不大,特別是iOS好評(píng)榜,老款設(shè)
  • 跑分安卓第一!Redmi K60至尊版8月發(fā)布!盧偉冰:目標(biāo)年度性能之王

    8月5日消息,Redmi K60至尊版將于8月發(fā)布,在此前舉行的戰(zhàn)略發(fā)布會(huì)上,官方該機(jī)將搭載搭載天璣9200+處理器,安兔兔V10跑分超177萬(wàn)分,是目前安卓陣營(yíng)最高的分?jǐn)?shù)
  • 十個(gè)簡(jiǎn)單但很有用的Python裝飾器

    裝飾器(Decorators)是Python中一種強(qiáng)大而靈活的功能,用于修改或增強(qiáng)函數(shù)或類(lèi)的行為。裝飾器本質(zhì)上是一個(gè)函數(shù),它接受另一個(gè)函數(shù)或類(lèi)作為參數(shù),并返回一個(gè)新的函數(shù)或類(lèi)。它們通常用
  • 一條抖音4億人圍觀 ! 這家MCN比無(wú)憂傳媒還野

    作者:Hiu 來(lái)源:互聯(lián)網(wǎng)品牌官01 擦邊少女空降熱搜,幕后推手曝光被網(wǎng)友譽(yù)為&ldquo;純欲天花板&rdquo;的女網(wǎng)紅井川里予,近期因?yàn)橐唤M哥特風(fēng)照片登上熱搜,引發(fā)了一場(chǎng)互聯(lián)網(wǎng)世界關(guān)于
  • 阿里大調(diào)整

    來(lái)源:產(chǎn)品劉有媒體報(bào)道稱(chēng),近期淘寶天貓集團(tuán)啟動(dòng)了近年來(lái)最大的人力制度改革,涉及員工績(jī)效、層級(jí)體系等多個(gè)核心事項(xiàng),目前已形成一個(gè)初步的&ldquo;征求意見(jiàn)版&rdquo;:1、取消P序列
  • 三星顯示已開(kāi)始為AR設(shè)備研發(fā)硅基LED微顯示屏

    7月18日消息,據(jù)外媒報(bào)道,隨著蘋(píng)果首款頭顯產(chǎn)品Vision Pro在6月份正式推出,AR/VR/MR等頭顯產(chǎn)品也就將成為各大公司下一個(gè)重要的競(jìng)爭(zhēng)領(lǐng)域,對(duì)顯示屏這一關(guān)
  • 超級(jí)標(biāo)準(zhǔn)版旗艦!iQOO 11S全球首發(fā)iQOO超算獨(dú)顯芯片

    上半年已接近尾聲,截至目前各大品牌旗下的頂級(jí)旗艦都已悉數(shù)亮相,而下半年即將推出的頂級(jí)旗艦已經(jīng)成為了數(shù)碼圈爆料的主流,其中就包括全新的iQOO 11S系
  • OPPO K11搭載長(zhǎng)壽版100W超級(jí)閃充:26分鐘充滿(mǎn)100%

    據(jù)此前官方宣布,OPPO將于7月25日也就是今天下午14:30舉辦新品發(fā)布會(huì),屆時(shí)全新的OPPO K11將正式與大家見(jiàn)面,將主打旗艦影像,和同檔位競(jìng)品相比,其最大的賣(mài)
Top