成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

通俗易懂的Java線程池原理

宋華 / 510人閱讀

摘要:前言最近發(fā)現(xiàn)很多小伙伴對于線程池的原理不是特別的理解,所以想通過這篇文章來讓大家更好的認(rèn)識線程池的原理,了解到其是如何工作的講解下面我會將線程池比作一個(gè)公司的一個(gè)部門,介紹線程池如何工作的,同時(shí)介紹其中的一些關(guān)鍵組件和參數(shù)。

前言

最近發(fā)現(xiàn)很多小伙伴對于Java線程池ThreadPoolExecutor的原理不是特別的理解,所以想通過這篇文章來讓大家更好的認(rèn)識線程池的原理,了解到其是如何工作的?

講解

下面我會將線程池比作一個(gè)公司的一個(gè)部門,介紹線程池如何工作的,同時(shí)介紹其中的一些關(guān)鍵組件和參數(shù)。

ThreadFactory

一天,某家公司由于業(yè)務(wù)發(fā)展需要,準(zhǔn)備建立一個(gè)新的部門。由于這個(gè)部門的業(yè)務(wù)公司里是沒有一個(gè)人接觸過,準(zhǔn)備招聘一批人來干這個(gè)活。

但是這個(gè)招人肯定會對人才有要求吧,所以就需要HR來把關(guān)了,通過HR來控制入職的人員的素質(zhì)。(這里把員工比作線程,HR比作ThreadFactory,實(shí)際上線程是由ThreadFactory創(chuàng)建的)

corePoolSize

既然上面都提到招人了,那當(dāng)然不可能無限招人,這個(gè)崗位是有上限(corePoolSize是核心線程池的大小,而這里是比作核心員工的上限,畢竟核心員工不會隨便解雇)。

需要注意,線程池實(shí)際工作是會在當(dāng)前沒有空閑的核心線程時(shí),且當(dāng)前核心線程數(shù)沒有達(dá)到上限corePoolSize時(shí),直接創(chuàng)建一個(gè)新的核心線程。

maximumPoolSize

隨著工作的開展,核心員工逐漸招滿人了??墒桥紶栆矔霈F(xiàn)工作太大,核心員工工作無法按期完成的情況。

于是老板靈機(jī)一動(dòng),干脆招一批外包吧。就讓HR來把關(guān)這批外包的素質(zhì)。

而核心員工數(shù)+外包員工數(shù)=部門總?cè)藬?shù)(maximumPoolSize是線程池的大小,這里比作部門總?cè)藬?shù))。

這里需要注意,既然都是HR把關(guān)的人,也就是說線程都會由ThreadFactory創(chuàng)建的。

keepAliveTime和unit

既然招聘的是外包,那當(dāng)然有聘期(keepAliveTime指的是線程存活時(shí)間,這里比作外包的聘期)了,而且聘期肯定是有時(shí)間單位(unit指的是線程存活時(shí)間的時(shí)間單位)。

workQueue

HR好不容易招滿了外包,可是部門的人卻發(fā)現(xiàn)工作的確是做不完啊,怎么辦呢?

只好是把任務(wù)排期了(workQueue指的是阻塞隊(duì)列BlockingQueue對象,這里比作任務(wù)排期),如果誰狀態(tài)好可以從排期的任務(wù)中把任務(wù)提前做了。

handler

但是部門的人排期后發(fā)現(xiàn),工作實(shí)在太多了,排期都排到要天天加班才能搞定。

于是部門的人干脆向領(lǐng)導(dǎo)投訴了,拒絕這么多工作,至于怎么拒絕就得看他們怎么做了(handler指的是拒絕執(zhí)行處理器RejectedExecutionHandler,只有當(dāng)線程池每個(gè)線程都在工作中,且BlockingQueue達(dá)到上限才會觸發(fā)。)

allowCoreThreadTimeOut

某一天老板想不開,覺得這個(gè)部門的員工沒必要留,可是部門的業(yè)務(wù)還有賺錢的。

于是他靈機(jī)一動(dòng),為什么不整個(gè)部門都招外包來干活呢?

于是整個(gè)部門都是外包了,工作不忙時(shí)就可以很方便的減少人員了。(allowCoreThreadTimeOut是設(shè)置核心線程是否允許超時(shí)的標(biāo)志位,默認(rèn)為false即核心線程不允許超時(shí)回收,而設(shè)置為true時(shí),核心線程如果在一定時(shí)間內(nèi)keepAliveTime無任務(wù)處理就會觸發(fā)超時(shí)回收)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/75115.html

相關(guān)文章

  • 重拾 Java 基礎(chǔ)

    摘要:阿里開始招實(shí)習(xí),同學(xué)問我要不要去申請阿里的實(shí)習(xí),我說不去,個(gè)人對阿里的印象不好。記得去年阿里給我發(fā)了郵件,我很認(rèn)真地回復(fù),然后他不理我了。 引言 最近好久沒有遇到技術(shù)瓶頸了,思考得自然少了,每天都是重復(fù)性的工作。 阿里開始招實(shí)習(xí),同學(xué)問我要不要去申請阿里的實(shí)習(xí),我說不去,個(gè)人對阿里的印象不好。 記得去年阿里給我發(fā)了郵件,我很認(rèn)真地回復(fù),然后他不理我了。(最起碼的尊重都沒有,就算我菜你起...

    ideaa 評論0 收藏0
  • 深入剖析ThreadPool運(yùn)行原理

    摘要:而且,線程池中的線程并沒有睡眠,而是進(jìn)入了自旋狀態(tài)。普通的線程被中斷會導(dǎo)致線程繼續(xù)執(zhí)行,從而方法運(yùn)行完畢,線程退出。線程死亡超過時(shí)間,任務(wù)對列沒有數(shù)據(jù)而返回。線程死亡保證了線程池至少留下個(gè)線程。 線程在執(zhí)行任務(wù)時(shí),正常的情況是這樣的: Thread t=new Thread(new Runnable() { @Override ...

    Pines_Cheng 評論0 收藏0
  • Java線程并發(fā)編程面試筆錄一覽

    摘要:創(chuàng)建線程的方式方式一將類聲明為的子類。將該線程標(biāo)記為守護(hù)線程或用戶線程。其中方法隱含的線程為父線程?;謴?fù)線程,已過時(shí)。等待該線程銷毀終止。更多的使當(dāng)前線程在鎖存器倒計(jì)數(shù)至零之前一直等待,除非線 知識體系圖: showImg(https://segmentfault.com/img/bVbef6v?w=1280&h=960); 1、線程是什么? 線程是進(jìn)程中獨(dú)立運(yùn)行的子任務(wù)。 2、創(chuàng)建線...

    bitkylin 評論0 收藏0
  • 通俗易懂,JDK 并發(fā)容器總結(jié)

    摘要:線程安全的線程安全的,在讀多寫少的場合性能非常好,遠(yuǎn)遠(yuǎn)好于高效的并發(fā)隊(duì)列,使用鏈表實(shí)現(xiàn)。這樣帶來的好處是在高并發(fā)的情況下,你會需要一個(gè)全局鎖來保證整個(gè)平衡樹的線程安全。 該文已加入開源項(xiàng)目:JavaGuide(一份涵蓋大部分Java程序員所需要掌握的核心知識的文檔類項(xiàng)目,Star 數(shù)接近 14 k)。地址:https://github.com/Snailclimb... 一 JDK ...

    curlyCheng 評論0 收藏0
  • 【推薦】最新200篇:技術(shù)文章整理

    摘要:作為面試官,我是如何甄別應(yīng)聘者的包裝程度語言和等其他語言的對比分析和主從復(fù)制的原理詳解和持久化的原理是什么面試中經(jīng)常被問到的持久化與恢復(fù)實(shí)現(xiàn)故障恢復(fù)自動(dòng)化詳解哨兵技術(shù)查漏補(bǔ)缺最易錯(cuò)過的技術(shù)要點(diǎn)大掃盲意外宕機(jī)不難解決,但你真的懂?dāng)?shù)據(jù)恢復(fù)嗎每秒 作為面試官,我是如何甄別應(yīng)聘者的包裝程度Go語言和Java、python等其他語言的對比分析 Redis和MySQL Redis:主從復(fù)制的原理詳...

    BicycleWarrior 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<