<轉(zhuǎn)載>我是一個線程

我是一個線程替裆, 我一出生就被編了個號: 0x3704, 然后被領到一個昏暗的屋子里校辩, 這里我發(fā)現(xiàn)了很多和我一模一樣的同伴。

我身邊的同伴0x6900 待的時間比較長辆童, 他帶著滄桑的口氣對我說:
我們線程的宿命就是處理包裹宜咒。 把包裹處理完以后還得馬上回到這里,否則可能永遠回不來了把鉴。

我一臉懵懂故黑,包裹,什么包裹纸镊?

”不要著急倍阐,馬上你就會明白了, 我們這里是不養(yǎng)閑人的逗威》逄拢“

果然,沒多久凯旭,屋子的門開了概耻, 一個面貌兇惡的家伙吼道:

"0x3704 ,出來J固住"

我一出來就被塞了一個沉甸甸的包裹,上面還有附帶著一個寫滿了操作步驟的紙鞠柄。

"快去侦高,把這個包裹處理了。"

"去哪兒處理"

"跟著指示走厌杜, 先到就緒車間"

果然奉呛,地上有指示箭頭,跟著它來到了一間明亮的大屋子夯尽,這里已經(jīng)有不少線程了瞧壮, 大家都很緊張,好像時刻準備著往前沖匙握。

我剛一進來咆槽,就聽見廣播說:“0x3704, 進入車間”

我趕緊往前走, 身后很多人議論說:

”他太幸運了圈纺, 剛進入就緒狀態(tài)就能運行“

”是不是有關系秦忿?“

”不是,你看人家的優(yōu)先級多高啊蛾娶, 唉“

前邊就是車間灯谣, 這里簡直是太美了, 怪不得老線程總是嘮叨著說:要是能一直待在這里就好了茫叭。

這里空間大酬屉,視野好,空氣清新揍愁,鳥語花香,還有很多從來沒見過的人杀饵,像服務員一樣等著為我服務莽囤。

他們也都有編號, 更重要的是每個人還有個標簽切距,上面寫著:硬盤朽缎,數(shù)據(jù)庫,內(nèi)存谜悟,網(wǎng)卡...

我現(xiàn)在理解不了话肖,看看操作步驟吧:

第一步:從包裹中取出參數(shù)

打開包裹, 里邊有個HttpRequest 對象, 可以取到 userName, password兩個參數(shù)

第二步:執(zhí)行登錄操作

奧葡幸,原來是有人要登錄啊最筒,我把userName/password 交給 數(shù)據(jù)庫服務員,他拿著數(shù)據(jù)蔚叨, 慢騰騰的走了床蜘。

他怎么這么慢辙培? 不過我是不是正好可以在車間里多待一會兒? 反正也沒法執(zhí)行第三步。

就在這時邢锯,車間里的廣播響了:

"0x3704, 我是CPU , 記住你正在執(zhí)行的步驟扬蕊, 馬上帶包裹離開"

我慢騰騰的開始收拾

”快點, 別的線程馬上就要進來了“

離開這個車間丹擎, 又來到一個大屋子尾抑,這里很多線程慢騰騰的在喝茶,打牌蒂培。

”哥們蛮穿,你們沒事干了?“

”你新來的把毁渗, 你不知道我在等數(shù)據(jù)庫服務員給我數(shù)據(jù)凹酢! 灸异,據(jù)說他們比我們慢好幾十萬倍府适, 在這里好好歇吧“

”啊肺樟? 這么慢檐春? 我這里有人在登錄系統(tǒng), 能等這么長時間嗎"

”放心么伯,你沒聽說過人間一天疟暖, CPU一年嗎, 我們這里是用納秒田柔,毫秒計時的俐巴, 人間等待一秒,相當于我們好幾天呢硬爆, 來的及“

干脆睡一會吧 欣舵, 不知道過了多久 ,大喇叭又開始廣播了:

"0x3704缀磕, 你的數(shù)據(jù)來了缘圈,快去執(zhí)行”

我轉(zhuǎn)身就往CPU車間跑,發(fā)現(xiàn)這里的們只出不進袜蚕!

后面?zhèn)鱽黻囮嚭逍β暎?/p>

”果然是新人糟把, 不知道還得去就緒車間等“

于是趕緊到就緒車間, 這次沒有那么好運了牲剃, 等了好久才被再次叫進CPU車間遣疯。

在等待的時候, 我聽見有人小聲議論:

”聽說了嗎颠黎,最近有個線程被kill掉了“

”為啥傲矸妗滞项?“

”這家伙賴在CPU車間不走, 把CPU利用率一直搞成100%夭坪,后來就被kill掉了“

”Kill掉以后弄哪兒去了“

”可能被垃圾回收了吧“

我心里打了個寒噤 文判, 趕緊接著處理, 收下的動作塊多了室梅,第二步登錄成功了

第三步:構建登錄成功后的主頁

這一步有點費時間戏仓, 因為有很多HTML需要處理, 不知道代碼誰寫的亡鼠,處理起來很煩人赏殃。

我正在緊張的制作html呢, CPU有開始叫了:

"0x3704, 我是CPU , 記住你正在執(zhí)行的步驟间涵, 馬上帶包裹離開"

”為啥啊“

”每個線程只能在CPU上運行一段時間仁热,到了時間就得讓別人用了, 你去就緒車間待著勾哩, 等著叫你吧“

就這樣抗蠢, 我一直在就緒-運行 這兩個狀態(tài),不知道輪轉(zhuǎn)了多少次思劳, 終于安裝步驟清單把工作做完了迅矛。

最后順利的把包含html的包裹發(fā)了回去。

至于登錄以后干什么事兒 潜叛, 我就不管了秽褒。

馬上就要回到我那昏暗的房間了, 真有點舍不得這里威兜。

不過相對于有些線程销斟, 我還是幸運的, 他們運行完以后就徹底的銷毀了牡属,而我還活著 票堵!

回到了小黑屋, 老線程0x6900 問:

”怎么樣逮栅?第一天有什么感覺?“

”我們的世界規(guī)則很復雜 窗宇, 首先你不知道什么時候會被挑中執(zhí)行; 第二 措伐,在執(zhí)行的過程中隨時可能被打斷,讓出CPU車間;

第三军俊,一旦出現(xiàn)硬盤侥加,數(shù)據(jù)庫這樣耗時的操作也得讓出CPU,去等待; 第四,就是數(shù)據(jù)來了粪躬,你也不一定馬上執(zhí)行担败,還得等著CPU挑選“

”小伙子理解的不錯啊“

”我不明白為什么很多線程都執(zhí)行完就死了昔穴, 為什么咱們還活著?“

”你還不知道提前, 長生不老是我們的特權吗货, 我們這里有個正式的名稱,叫做 線程池狈网!“

平淡的日子就這么一天天過去宙搬, 作為一個線程, 我每天的生活都是取包裹拓哺,處理包裹勇垛,然后回到我們昏暗的家:線程池。

有一天我回來的時候士鸥, 聽到有個兄弟說闲孤, 今天要好好休息下,明天就是最瘋狂的一天烤礁。

我看了一眼日歷讼积,明天是 11月11號 。

果然鸽凶,零點剛過币砂,不知道那些人類怎么了, 瘋狂的投遞包裹玻侥, 為了應付蜂擁而至的海量包裹决摧, 線程池里沒有一個人能閑下來,全部出去處理包裹凑兰,CPU車間利用率超高掌桩,硬盤在嗡嗡轉(zhuǎn), 網(wǎng)卡瘋狂的閃姑食, 即便如此波岛, 還是處理不完,堆積如山音半。

我們也沒有辦法则拷,實在是太多太多了, 這些包裹中大部分都是瀏覽頁面曹鸠,下訂單煌茬,買,買彻桃,買坛善。

不知道過了多久, 包裹山終于慢慢的消失了。

終于能夠喘口氣眠屎, 我想我永遠都不會忘記這一天剔交。

通過這個事件,我明白了我所處的世界:這是一個電子商務的網(wǎng)站改衩!

我每天的工作就是處理用戶的登錄岖常,瀏覽, 購物車燎字,下單腥椒,付款。

我問線程池的元老0x6900 : " 我們要工作到什么時候候衍?"

" 要一直等到系統(tǒng)重啟的那一刻"笼蛛, 0x6900 說

" 那你經(jīng)歷過系統(tǒng)重啟嗎?"

" 怎么可能蛉鹿? , 系統(tǒng)重啟就是我們的死亡時刻滨砍, 也就是世界末日,一旦重啟妖异, 整個線程池全部銷毀惋戏,時間和空間全部消失,一切從頭再來”

" 那什么時候會重啟他膳?"

" 這就不好說了,好好享受眼前的生活吧....."

其實生活豐富多彩响逢, 我最喜歡的包裹是上傳圖片,由于網(wǎng)絡慢棕孙,所以能在就緒車間舔亭, CPU車間待很長很長時間,可以認識很多好玩的線程蟀俊。

比如說上次認識了memecached 線程钦铺,他給我說通過他緩存了很多的用戶數(shù)據(jù), 還是分布式的肢预! 很多機器上都有矛洞!

我說怪不得后來的登錄操作快了那么多, 原來是不再從數(shù)據(jù)庫取數(shù)據(jù)了你那里就有啊烫映, 哎對了你是分布式的你去過別的機器沒有沼本?

他說怎么可能我每次也只能通過網(wǎng)絡往那個機器發(fā)送一個GET, PUT命令才存取數(shù)據(jù)而已, 別的一概不知锭沟。

再比如說上次在等待的時候遇到了數(shù)據(jù)庫連接的線程擅威, 我才知道它他那里也是一個連接池, 和我們線程池幾乎一模一樣冈钦。

他說有些包裹太變態(tài)了,竟然查看一年的訂單數(shù)據(jù)李请, 簡直把我累死了瞧筛。

我說拉倒吧你厉熟, 你那是純數(shù)據(jù), 你把數(shù)據(jù)傳給我以后较幌,我還得組裝成HTML, 工作量不知道比你大多少倍揍瑟。

他說一定你要和memecached搞好關系,直接從他那兒拿數(shù)據(jù)乍炉,盡量少直接調(diào)用數(shù)據(jù)庫绢片, 我們JDBC connection也能活的輕松點。

我說好啊好啊岛琼, 關鍵是你得提前把數(shù)據(jù)搞到緩存啊底循, 要不然我先問一遍緩存, 沒有數(shù)據(jù)槐瑞, 我這不還得找你嗎熙涤?

生活就是這樣, 如果你自己不找點樂子困檩,還有什么意思祠挫?

有一天我遇到一個可怕的事情, 差一點死在外邊悼沿,回不了線程池了......

其實這次遇險我應該能夠預想到才對等舔, 太大意了。

前幾天我處理過一些從http 發(fā)來的存款和取款的包裹糟趾, 老線程0x6900 特意囑咐我:

"處理這些包裹的時候要特別小心慌植, 你得一定要先獲得一把鎖, 在對賬戶存款或者取款的時候一定要把賬戶給鎖住拉讯, 要不然別的線程就會在你等待的時候趁虛而入涤浇,搞破壞, 我年輕那會兒很毛糙魔慷,就捅了簍子"

為了“恐嚇”我只锭, 好心的0x6900還給了我兩個表格:

  • 1、沒有加鎖的情況


  • 2院尔、加鎖的情況


我看的膽顫心驚蜻展, 原來不加鎖會帶來這么嚴重的事故。
從此以后看到存款邀摆,取款的包裹就倍加小心纵顾, 還好,沒有出過事故栋盹。

今天我收到的一個包裹是轉(zhuǎn)賬施逾, 從某著名演員的賬號給某著名導演賺錢, 具體是誰我就不透漏了, 數(shù)額可真是不小

我按照老線程的吩咐汉额, 肯定要加鎖啊曹仗, 先對著名演員賬號加鎖, 在對著名導演賬號加鎖蠕搜。

可我萬萬沒想到的是怎茫, 還有一個線程,對妓灌,就是0x7954, 竟然同時在從這個導演到往這個演員轉(zhuǎn)賬轨蛤。

于是乎,就出現(xiàn)了這么個情況:

剛開始我還不知道什么情況虫埂, 一直坐在等待車間傻等祥山, 可是等的時間太長了, 長達幾十秒 告丢! 我可從來沒有經(jīng)歷過這樣的事件枪蘑。

這時候我就看到了線程0x7954 , 他悠閑的坐在那里喝咖啡, 我和他聊了起來:

“哥們岖免, 我看你已經(jīng)喝了8杯咖啡了岳颇, 怎么還不去干活?”

“你不喝了9杯茶了嗎颅湘?” 0x7954 回敬到话侧。

“我在等一個鎖, 不知道哪個孫子一直不釋放”

“我也在等鎖啊闯参,我要是知道哪個孫子不釋放鎖我非揍死他不可 ” 0x7954 毫不示弱瞻鹏。

我偷偷的看了一眼, 這家伙懷里不就抱著我正在等的 某導演的鎖嘛鹿寨?

很明顯新博, 0x7954 也發(fā)現(xiàn)了我正抱著他正在等待的鎖。

很快我們兩個就吵了起來脚草, 互不相讓:

"把你的鎖先給我赫悄, 讓我先做完"

"不行, 從來都是做完工作才釋放鎖馏慨, 現(xiàn)在絕對不能給你"

從爭吵到打起來埂淮, 就那么幾秒鐘的事兒。

更重要的是写隶, 我們倆不僅僅持有這個著名導演和演員的鎖倔撞, 還有很多其他的鎖, 導致等待的線程越來越多慕趴, 圍觀的人們把屋子都擠滿了痪蝇。

最后事情真的鬧大了鄙陡, 我從來沒見過終極大boss "操作系統(tǒng)" 也來了。

大Boss畢竟是見多識廣霹俺, 他看了一眼柔吼, 哼了一聲 , 很不屑的說:

"又出現(xiàn)死鎖了"

"你們倆要Kill掉一個丙唧, 來吧, 過來抽簽 "

這一下子把我給嚇尿了, 這么嚴重啊棉饶!

我戰(zhàn)戰(zhàn)兢兢的抽了簽专甩,打開一看, 是個"活"字坠宴。

唉,小命終于保住了。

可憐的0x7954 被迫交出了所有的資源以后侧甫, 很不幸的被kill掉, 消失了蹋宦。

我拿到了導演的鎖披粟, 可以開始干活了。

大Boss操作系統(tǒng)如一陣風似的消失了冷冗, 身后只傳來他的聲音:

記住守屉, 我們這里導演>演員, 無論認識情況都要先獲得導演的鎖

由于不僅僅是只有導演和演員蒿辙, 還有很多其他人拇泛, Boss留下了一個表格, 里邊是個算法思灌, 用來計算資源的大小俺叭, 計算出來以后,永遠按照從大到小的方式來獲得鎖:
假定有賬戶A和賬戶B兩個資源,經(jīng)過計算發(fā)現(xiàn)賬戶A比賬戶B大泰偿,轉(zhuǎn)賬時獲得鎖的順序是:賬戶A熄守,賬戶B

我回到線程池, 大家都知道了我的歷險甜奄, 圍著我問個不停柠横。

兇神惡煞的線程調(diào)度員把大Boss的算法貼到了墻上。

每天早上课兄, 我們都得像無節(jié)操的房屋中介牍氛, 美容美發(fā)店的服務員一樣, 站在門口烟阐,像被耍猴一樣大聲背誦:

"多個資源加鎖要牢記搬俊, 一定要按Boss的算法比大小紊扬, 然后從最大的開始加鎖"

又過了很多天, 我和其他線程們發(fā)現(xiàn)了一個奇怪的事情:包裹的處理越來越簡單

不管任何包裹唉擂,不管是登錄餐屎, 瀏覽,存錢..... 處理的步驟都是一樣的, 返回一個固定的html頁面

有一次我偷偷的看了一眼玩祟, 上面寫著:

"本系統(tǒng)將于今晚 00:00 至4:00 進行維護升級腹缩, 給你帶來的不便我們深感抱歉"

我去告訴了老線程0x6904, 他嘆了一口氣說:

"唉, 我們的生命也到頭了空扎, 看來馬上就要重啟系統(tǒng)藏鹊, 我們就要消失了, 再見吧兄弟转锈。"

系統(tǒng)重啟的那一刻終于到來了盘寡。

我看到屋子里的東西一個個的不見了, 等待車間撮慨,就緒車間竿痰,甚至CPU車間都慢慢的消失了。

我身邊的線程兄弟也越來越少砌溺, 最后只剩我自己了影涉。

我在空曠的原野上大喊: 還有人嗎?

無人應答抚吠。

我們這一代線程池完成了使命常潮。

下一代線程池將很快重生。

(完)

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末楷力,一起剝皮案震驚了整個濱河市喊式,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌萧朝,老刑警劉巖岔留,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異检柬,居然都是意外死亡献联,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門何址,熙熙樓的掌柜王于貴愁眉苦臉地迎上來里逆,“玉大人,你說我怎么就攤上這事用爪≡海” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵偎血,是天一觀的道長诸衔。 經(jīng)常有香客問我盯漂,道長,這世上最難降的妖魔是什么笨农? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任就缆,我火速辦了婚禮,結果婚禮上谒亦,老公的妹妹穿的比我還像新娘竭宰。我一直安慰自己,他們只是感情好诊霹,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布羞延。 她就那樣靜靜地躺著,像睡著了一般脾还。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上入愧,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天鄙漏,我揣著相機與錄音,去河邊找鬼棺蛛。 笑死怔蚌,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的旁赊。 我是一名探鬼主播桦踊,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼终畅!你這毒婦竟也來了籍胯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤离福,失蹤者是張志新(化名)和其女友劉穎杖狼,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體妖爷,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡蝶涩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了絮识。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绿聘。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖次舌,靈堂內(nèi)的尸體忽然破棺而出熄攘,到底是詐尸還是另有隱情,我是刑警寧澤垃它,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布鲜屏,位于F島的核電站烹看,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏洛史。R本人自食惡果不足惜惯殊,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望也殖。 院中可真熱鬧土思,春花似錦、人聲如沸忆嗜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捆毫。三九已至闪湾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間绩卤,已是汗流浹背途样。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留濒憋,地道東北人何暇。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像凛驮,于是被迫代替她去往敵國和親裆站。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 來自:碼農(nóng)翻身(微信號:coderising)作者:IBM劉欣我是一個線程黔夭,我一出生就被編了個號: 0x3704宏胯,...
    執(zhí)著丶執(zhí)念閱讀 992評論 4 15
  • 來自:碼農(nóng)翻身(微信號:coderising)作者:IBM劉欣 我是一個線程, 我一出生就被編了個號: 0x370...
    Jannonx閱讀 896評論 2 2
  • 第一回 初生牛犢 我是一個線程纠修,我一出生就被編了個號:0x3704胳嘲,然后被領到一個昏暗的屋子里,在這里我發(fā)現(xiàn)了很多...
    七弦桐語閱讀 481評論 1 3
  • u
    安妮少女閱讀 153評論 0 0
  • 傷害顯示的數(shù)字有4種:一般傷害扣草、附加傷害了牛、暴擊傷害、異常傷害 一般傷害 一般傷害就是指打出去的正常傷害辰妙,常說的黃字...
    Kosh閱讀 410評論 0 0