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

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

美團(tuán)面試官:核心線程數(shù)為0時(shí),線程池如何執(zhí)行?

來源: 責(zé)編: 時(shí)間:2024-05-08 09:19:40 140觀看
導(dǎo)讀線程池是 Java 中用于提升程序執(zhí)行效率的主要手段,也是并發(fā)編程中的核心實(shí)現(xiàn)技術(shù),并且它也被廣泛的應(yīng)用在日常項(xiàng)目的開發(fā)之中。那問題來了,如果把線程池中的核心線程數(shù)設(shè)置為 0 時(shí),線程池是如何執(zhí)行的?要回答這個(gè)問題,我們

線程池是 Java 中用于提升程序執(zhí)行效率的主要手段,也是并發(fā)編程中的核心實(shí)現(xiàn)技術(shù),并且它也被廣泛的應(yīng)用在日常項(xiàng)目的開發(fā)之中。那問題來了,如果把線程池中的核心線程數(shù)設(shè)置為 0 時(shí),線程池是如何執(zhí)行的?cVI28資訊網(wǎng)——每日最新資訊28at.com

要回答這個(gè)問題,我們首先要了解在正常情況下,線程池的執(zhí)行流程,也就是說當(dāng)有一個(gè)任務(wù)來了之后,線程池是如何運(yùn)行的?cVI28資訊網(wǎng)——每日最新資訊28at.com

1.線程池的執(zhí)行流程

正常情況下(核心線程數(shù)不為 0 的情況下)線程池的執(zhí)行流程如下:cVI28資訊網(wǎng)——每日最新資訊28at.com

  1. 判斷核心線程數(shù):先判斷當(dāng)前工作線程數(shù)是否大于核心線程數(shù),如果結(jié)果為 false,則新建線程并執(zhí)行任務(wù)。
  2. 判斷任務(wù)隊(duì)列:如果大于核心線程數(shù),則判斷任務(wù)隊(duì)列是否已滿?如果結(jié)果為 false,則把任務(wù)添加到任務(wù)隊(duì)列中等待線程執(zhí)行。
  3. 判斷最大線程數(shù):如果任務(wù)隊(duì)列已滿,則判斷當(dāng)前線程數(shù)量是否超過最大線程數(shù)?如果結(jié)果為 false,則新建線程執(zhí)行此任務(wù)。
  4. 判斷是否要執(zhí)行拒絕策略:如果超過最大線程數(shù),則將執(zhí)行線程池的拒絕策略。

如下圖所示:cVI28資訊網(wǎng)——每日最新資訊28at.com

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

核心線程數(shù) VS 最大線程數(shù)

核心線程數(shù)(corePoolSize)和最大線程數(shù)(maximumPoolSize)都是線程池中的兩個(gè)重要參數(shù),其中:cVI28資訊網(wǎng)——每日最新資訊28at.com

  1. 核心線程數(shù)定義了線程池中最小線程數(shù)量,即使這些線程處于空閑狀態(tài),也不會(huì)被銷毀。
  2. 最大線程數(shù)定義了線程池中允許的最大線程數(shù)量,最大線程數(shù)等于核心線程數(shù) + 臨時(shí)線程數(shù),最大線程數(shù)主要是提供了一種機(jī)制來應(yīng)對突發(fā)的高并發(fā)請求,當(dāng)有大量任務(wù)的時(shí)候,可以創(chuàng)建線程數(shù)量的上線。

PS:在線程池的使用過程中,最大線程數(shù)必須大于等于核心線程數(shù),否則程序執(zhí)行會(huì)報(bào)錯(cuò)。cVI28資訊網(wǎng)——每日最新資訊28at.com

2.核心線程為0的執(zhí)行流程

那么問題來了,按照線程池的正常執(zhí)行流程來看,如果核心線程數(shù)為 0 的話,那么當(dāng)任務(wù)來了之后會(huì)判斷當(dāng)前工作的線程數(shù)不大于核心線程數(shù),那也就不會(huì)創(chuàng)建線程執(zhí)行任務(wù)了,會(huì)將任務(wù)放到隊(duì)列。cVI28資訊網(wǎng)——每日最新資訊28at.com

但這個(gè)結(jié)果又很滑稽,有任務(wù)來了線程池竟然不執(zhí)行,而是先放到任務(wù)隊(duì)列中,這好像有比較奇怪,這就好比你開了一個(gè)快遞店,當(dāng)有快遞來了之后,你想的不是如何派送,而是直接把它丟到倉庫一樣滑稽,這會(huì)讓等快遞的人很著急,所以,我們需要驗(yàn)證一下線程池的執(zhí)行是否如我們猜想的那般,驗(yàn)證代碼如下:cVI28資訊網(wǎng)——每日最新資訊28at.com

// 線程池核心線程數(shù)設(shè)置為 0ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(                0, 10, 1, TimeUnit.SECONDS,                new ArrayBlockingQueue<>(10));// 給線程池添加任務(wù)threadPoolExecutor.execute(() -> {    System.out.println("www.javacn.site");});

最終程序的執(zhí)行結(jié)果如下:cVI28資訊網(wǎng)——每日最新資訊28at.com

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

咦,結(jié)果怎么不符合我們的預(yù)期呢?為什么任務(wù)來了之后,沒有將任務(wù)放到任務(wù)隊(duì)列而是直接執(zhí)行了呢?cVI28資訊網(wǎng)——每日最新資訊28at.com

雖然程序執(zhí)行結(jié)果符合正常邏輯,但又和我們了解的線程池執(zhí)行理論相違背,這是什么原因呢?cVI28資訊網(wǎng)——每日最新資訊28at.com

查看線程池的執(zhí)行源碼

帶著這個(gè)疑問,我們查看了線程池的執(zhí)行源碼發(fā)現(xiàn),線程池的執(zhí)行過程遠(yuǎn)比我們想想的復(fù)雜,線程池核心源碼如下:cVI28資訊網(wǎng)——每日最新資訊28at.com

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

從上面源碼可以看出,當(dāng)我們將任務(wù)添加到隊(duì)列的時(shí)候,線程池會(huì)判斷工作的線程數(shù)是否為 0,也就是上面圈出來的那行代碼,如果當(dāng)前工作線程為 0 的話,會(huì)創(chuàng)建線程執(zhí)行任務(wù)。哦,原來如此,這樣,就能將理論和實(shí)踐對應(yīng)上了。cVI28資訊網(wǎng)——每日最新資訊28at.com

也就是說,當(dāng)核心線程數(shù)為 0 時(shí),當(dāng)來了一個(gè)任務(wù)之后,會(huì)先將任務(wù)添加到任務(wù)隊(duì)列,同時(shí)也會(huì)判斷當(dāng)前工作的線程數(shù)是否為 0,如果為 0,則會(huì)創(chuàng)建線程來執(zhí)行線程池的任務(wù),這就是正確的線程池執(zhí)行流程,同時(shí)也是面試官想要的答案。cVI28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-87259-0.html美團(tuán)面試官:核心線程數(shù)為0時(shí),線程池如何執(zhí)行?

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

上一篇: 十項(xiàng)快速檢查,確保你的 AWS 支出處于控制之中

下一篇: 虛擬現(xiàn)實(shí)與增強(qiáng)現(xiàn)實(shí):數(shù)字轉(zhuǎn)型的下一個(gè)前沿

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 帥氣純真少年!日本最帥初中生選美冠軍出爐

    日本第一帥哥初一生選美大賽冠軍現(xiàn)已正式出爐,冠軍是來自千葉縣的宗田悠良。日本一直熱衷于各種選美大賽,從&ldquo;最美JK&rdquo;起到&ldquo;最美女星&r
  • Flowable工作流引擎的科普與實(shí)踐

    一.引言當(dāng)我們在日常工作和業(yè)務(wù)中需要進(jìn)行各種審批流程時(shí),可能會(huì)面臨一系列技術(shù)和業(yè)務(wù)上的挑戰(zhàn)。手動(dòng)處理這些審批流程可能會(huì)導(dǎo)致開發(fā)成本的增加以及業(yè)務(wù)復(fù)雜度的上升。在這
  • 自動(dòng)化在DevOps中的力量:簡化軟件開發(fā)和交付

    自動(dòng)化在DevOps中扮演著重要角色,它提升了DevOps的效能。通過自動(dòng)化工具和方法,DevOps團(tuán)隊(duì)可以實(shí)現(xiàn)以下目標(biāo):消除手動(dòng)和重復(fù)性任務(wù)。簡化流程。在整個(gè)軟件開發(fā)生命周期中實(shí)現(xiàn)更
  • 三分鐘白話RocketMQ系列—— 如何發(fā)送消息

    我們知道RocketMQ主要分為消息 生產(chǎn)、存儲(chǔ)(消息堆積)、消費(fèi) 三大塊領(lǐng)域。那接下來,我們白話一下,RocketMQ是如何發(fā)送消息的,揭秘消息生產(chǎn)全過程。注意,如果白話中不小心提到相關(guān)代
  • Python異步IO編程的進(jìn)程/線程通信實(shí)現(xiàn)

    這篇文章再講3種方式,同時(shí)講4中進(jìn)程間通信的方式一、 Python 中線程間通信的實(shí)現(xiàn)方式共享變量共享變量是多個(gè)線程可以共同訪問的變量。在Python中,可以使用threading模塊中的L
  • 得物寵物生意「狂飆」,發(fā)力“它經(jīng)濟(jì)”

    作者|花花小萌主近日,得物宣布正式上線寵物鑒別,通過得物App內(nèi)的&ldquo;在線鑒別&rdquo;,可找到鑒別寵物的選項(xiàng)。通過上傳自家寵物的部位細(xì)節(jié),就能收獲擁有專業(yè)資質(zhì)認(rèn)證的得物鑒
  • 騰訊VS網(wǎng)易,最卷游戲暑期檔,誰能笑到最后?

    作者:無銹缽來源:財(cái)經(jīng)無忌7月16日晚,上海1862時(shí)尚藝術(shù)中心。伴隨著幻象的精準(zhǔn)命中,碩大的熒幕之上,比分被定格在了14:12,被寄予厚望的EDG戰(zhàn)隊(duì)以絕對的優(yōu)勢戰(zhàn)勝了BLG戰(zhàn)隊(duì),拿下了總決
  • 東方甄選單飛:有些鳥注定是關(guān)不住的

    作者:彭寬鴻來源:華爾街科技眼&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;東方甄選創(chuàng)始人俞敏洪帶隊(duì)的&ldquo;7天甘肅行&rdquo;直播活動(dòng)已在近日順利收官。成立后一
  • AI芯片初創(chuàng)公司Tenstorrent獲三星和現(xiàn)代1億美元投資

    Tenstorrent是一家由芯片行業(yè)資深人士Jim Keller領(lǐng)導(dǎo)的加拿大初創(chuàng)公司,專注于開發(fā)人工智能芯片,該公司周三表示,已經(jīng)從現(xiàn)代汽車集團(tuán)和三星投資基金等
Top