通俗易懂地給女朋友講 執行緒池的內部原理

2021-10-02 03:42:03 字數 2238 閱讀 9429

餐盤在燈光的照耀下格外晶瑩潔白,女朋友拿起紅酒杯輕輕地抿了一小口,對我說:「經常聽你說執行緒池,到底執行緒池到底是個什麼原理?」我楞了一下,心裡想女朋友今天是怎麼了,怎麼突然問出這麼專業的問題,但做為乙個專業人士在女朋友面前也不能露怯啊,想了一下便說:「我先給你講講我前同事老王的故事吧!」

老王是乙個已經北漂十多年的程式設計師,歲數大了,加班加不動了,公升遷也無望,於是拿著手裡的一些積蓄,回老家轉行創業。他選擇了洗浴行業,開一家洗浴中心,是的,一家正規的洗浴中心。之前在北京的時候,喜歡去的澡堂叫「清華池」,他想了想,就給自己的洗浴中心取名為「執行緒池」。

執行緒池開業以後,老王發現有顧客想做足療,於是就招聘了1個足療技師,多增加了一項業務增加了收入。隨著做足療的顧客增多,為了賺更多錢又招聘了4個足療技師。

過了一段時間,洗浴中心的生意越來越好,做足療的顧客也越來越多。但是,老王發現自己店裡的足療技師已經有5個足療技師,再招聘就太多了,支付不起再多工資了。足療技師忙不過來怎麼辦?老王是個聰明人,馬上想到辦法:讓顧客排隊,有哪個足療技師做完了,空閒出來了,就在隊伍裡再叫乙個顧客繼續做。

一到週末,來洗浴中心的顧客比平時多了幾倍,想足療的顧客排隊時間太長,顧客們已經不耐煩了。老王馬上做出反應,又緊急從其他洗浴中心招聘了5個足療技師,為隊伍裡顧客做足療,大大減少排隊的顧客。

不過,有時生意太火爆了,緊急招聘的技師也用上了,顧客排隊時間也是很長,再來新的顧客,老王只能滿臉賠笑地和顧客說:「您下次再來吧,下次給您找個好技師。」,把顧客拒之門外。

過了週末以後,店裡不能養閒人啊,老王就把緊急招聘的技師都辭退了。

老王的生意越做越紅火,很快就要開分店、融資上市、走上人生巔峰。既然這麼成功,就讓我們來復盤一下他的經營之道吧。

如果你了解了老王的經營之道,執行緒池就不難理解了,把顧客替換成任務,把足療技師替換成執行緒執行緒池洗浴中心就是執行緒池了,執行緒池的內部原理就是這樣的:

鈴鈴鈴,鬧鈴把我吵醒,原來是一場夢啊,我哪有什麼女朋友?今天上午有乙個面試,趕緊起床洗漱完畢,就出發了。在路上回想那個奇怪的夢,要不再複習一下執行緒池的內部原理吧!

先看一下threadpoolexecutor類的execute方法:

public

void

execute

(runnable command)

//執行緒池是執行狀態並且執行執行緒大於核心執行緒數時,把任務放入佇列中。if(

isrunning

(c)&& workqueue.

offer

(command)

)//執行執行緒大於核心執行緒數時並且佇列已滿時,

//建立執行緒放入執行緒池中,並且執行當前任務。

elseif(

!addworker

(command,

false))

//執行執行緒大於最大執行緒數時,失敗則拒絕該任務

reject

(command)

;}

在execute方法中,多次呼叫的addworker方法,再看一下這個方法:

private

boolean

addworker

(runnable firsttask,

boolean core)

}boolean workerstarted =

false

;boolean workeradded =

false

; worker w = null;

try}

finally

if(workeradded)}}

finally

return workerstarted;

}

乙個中年男子坐`在這裡插入**片`在我面前,對我說:「您好,我是今天的面試官。」我微笑地回應:「您好。」面試官面無表情地問我:「執行緒池一定用過吧,能說說執行緒池的內部原理嘛?」我差點笑出聲來,自信滿滿地說……

熱文推薦:

通俗易懂地講解 Vue router

charset utf 8 vuejs 教程title name viewport content width device width,initial scale 1.0,maximum scale 1.0,user scalable 0 content yes content black rou...

如何通俗易懂地解釋卷積?

卷積這個概念,很早以前就學過,但是一直沒有搞懂。教科書上通常會給出定義,給出很多性質,也會用例項和圖形進行解釋,但究竟為什麼要這麼設計,這麼計算,背後的意義是什麼,往往語焉不詳。乙個公式倘若倘若給不出結合實際的直觀的通俗的解釋 也就是背後的 物理 意義 就覺得少了點什麼,覺得不是真的懂了。教科書上一...

給女朋友講HTTP協議 網路基礎

為了更好的理解http,我們需要花點時間了解一下tcp ip協議族。通常使用的網路是在tcp ip協議族的基礎上運作的。而http屬於它內部的乙個子集。計算機與網路裝置要相互通訊,雙方就必須基於相同的方法。比如,如何探測到通訊目標 由哪一邊先發起通訊 使用哪種語言進行通訊 怎樣結束通訊等規則都需要事...