我是一個線程, 我一出生就被編了個號: 0x3704, 而後被領到一個昏暗的屋子裏, 這裏我發現了不少和我如出一轍的同伴。
我身邊的同伴0x6900 待的時間比較長, 他帶着滄桑的口氣對我說:
咱們線程的宿命就是處理包裹。 把包裹處理完之後還得立刻回到這裏,不然可能永遠回不來了。
我一臉懵懂,包裹,什麼包裹?
」不要着急,立刻你就會明白了, 咱們這裏是不養閒人的。「html
果真,沒多久,屋子的門開了, 一個面貌兇惡的傢伙吼道:
"0x3704 ,出來!"
我一出來就被塞了一個沉甸甸的包裹,上面還有附帶着一個寫滿了操做步驟的紙。
"快去,把這個包裹處理了。"
"去哪兒處理"
"跟着指示走, 先到就緒車間"數據庫
果真,地上有指示箭頭,跟着它來到了一間明亮的大屋子,這裏已經有很多線程了, 你們都很緊張,好像時刻準備着往前衝。
我剛一進來,就聽見廣播說:「0x3704, 進入車間」
我趕忙往前走, 身後不少人議論說:
」他太幸運了, 剛進入就緒狀態就能運行「
」是否是有關係?「
」不是,你看人家的優先級多高啊, 唉「微信
前邊就是車間, 這裏簡直是太美了, 怪不得老線程老是嘮叨着說:要是能一直待在這裏就行了。
這裏空間大,視野好,空氣清新,鳥語花香,還有不少歷來沒見過的人,像服務員同樣等着爲我服務。
他們也都有編號, 更重要的是每一個人還有個標籤,上面寫着:硬盤,數據庫,內存,網卡...
我如今理解不了,看看操做步驟吧:
第一步:從包裹中取出參數
打開包裹, 裏邊有個HttpRequest 對象, 能夠取到 userName, password兩個參數
第二步:執行登陸操做
奧,原來是有人要登陸啊,我把userName/password 交給 數據庫服務員,他拿着數據, 慢騰騰的走了。
他怎麼這麼慢? 不過我是否是正好能夠在車間裏多待一下子? 反正也無法執行第三步。
就在這時,車間裏的廣播響了:
"0x3704, 我是CPU , 記住你正在執行的步驟, 立刻帶包裹離開"
我慢騰騰的開始收拾
」快點, 別的線程立刻就要進來了「多線程
離開這個車間, 又來到一個大屋子,這裏不少線程慢騰騰的在喝茶,打牌。
」哥們,大家沒事幹了?「
」你新來的把, 你不知道我在等數據庫服務員給我數據啊! ,聽說他們比咱們慢好幾十萬倍, 在這裏好好歇吧「
」啊? 這麼慢? 我這裏有人在登陸系統, 能等這麼長時間嗎"
」放心,你沒據說過人間一天, CPU一年嗎, 咱們這裏是用納秒,毫秒計時的, 人間等待一秒,至關於咱們好幾天呢, 來的及「
乾脆睡一會吧 , 不知道過了多久 ,大喇叭又開始廣播了:
"0x3704, 你的數據來了,快去執行」
我轉身就往CPU車間跑,發現這裏的們只出不進!
後面傳來陣陣鬨笑聲:
」果真是新人, 不知道還得去就緒車間等「線程
因而趕忙到就緒車間, 此次沒有那麼好運了, 等了很久才被再次叫進CPU車間。
在等待的時候, 我聽見有人小聲議論:
」據說了嗎,最近有個線程被kill掉了「
」爲啥啊?「
」這傢伙賴在CPU車間不走, 把CPU利用率一直搞成100%,後來就被kill掉了「
」Kill掉之後弄哪兒去了「
」可能被垃圾回收了吧「htm
我內心打了個寒噤 , 趕忙接着處理, 收下的動做塊多了,第二步登陸成功了
第三步:構建登陸成功後的主頁
這一步有點費時間, 由於有不少HTML須要處理, 不知道代碼誰寫的,處理起來很煩人。
我正在緊張的製做html呢, CPU有開始叫了:
"0x3704, 我是CPU , 記住你正在執行的步驟, 立刻帶包裹離開"
」爲啥啊「
」每一個線程只能在CPU上運行一段時間,到了時間就得讓別人用了, 你去就緒車間待着, 等着叫你吧「對象
就這樣, 我一直在就緒-運行 這兩個狀態,不知道輪轉了多少次, 終於安裝步驟清單把工做作完了。
最後順利的把包含html的包裹發了回去。
至於登陸之後幹什麼事兒 , 我就無論了。
立刻就要回到我那昏暗的房間了, 真有點捨不得這裏。
不過相對於有些線程, 我仍是幸運的, 他們運行完之後就完全的銷燬了,而我還活着 !內存
回到了小黑屋, 老線程0x6900 問:
」怎麼樣?第一天有什麼感受?「
」咱們的世界規則很複雜 , 首先你不知道何時會被挑中執行; 第二 ,在執行的過程當中隨時可能被打斷,讓出CPU車間;
第三,一旦出現硬盤,數據庫這樣耗時的操做也得讓出CPU,去等待; 第四,就是數據來了,你也不必定立刻執行,還得等着CPU挑選「登錄
」小夥子理解的不錯啊「
」我不明白爲何不少線程都執行完就死了, 爲何我們還活着?「
」你還不知道, 長生不總是咱們的特權, 咱們這裏有個正式的名稱,叫作 線程池!「
(未完待續)線程池
歡迎和我交流微信公共號:"碼農翻身" QQ :14703250