ThreadPoolExecutor$Worker 要鎖干嗎

Worker extends AbstractQueuedSynchronizer队萤, 它就是一個運行task的線程,沒有task就去queue里去take茧妒,它繼承AQS是

/** * Class Worker mainly maintains interrupt control state for * threads running tasks, along with other minor bookkeeping. * This class opportunistically extends AbstractQueuedSynchronizer * to simplify acquiring and releasing a lock surrounding each * task execution. This protects against interrupts that are * intended to wake up a worker thread waiting for a task from * instead interrupting a task being run. We implement a simple * non-reentrant mutual exclusion lock rather than use * ReentrantLock because we do not want worker tasks to be able to * reacquire the lock when they invoke pool control methods like * setCorePoolSize. Additionally, to suppress interrupts until * the thread actually starts running tasks, we initialize lock * state to a negative value, and clear it upon start (in * runWorker). */

英文不怎么會身笤,大概就是保護線程運行task,初始的時候置state為-1.

想了半天斤彼,得出:

1分瘦, 如果此線程運行task不去拿個排它鎖,此時如果出現(xiàn)清理idel線程的行為琉苇,方法?interruptIdleWorkers 就不用這行:

if (!t.isInterrupted() && w.tryLock()) {

如果task代碼實現(xiàn)里有Thread.sleep或者join等嘲玫,那就會被中斷,task運行沒完成并扇。這個應(yīng)該就是注釋里所說避免

"instead interrupting a task being run"的含義去团。加鎖以后線程池shutdown或者resetsize需要interrupt threads需要先

拿到鎖。

2穷蛹, 有人問為啥不直接用ReentrantLock土陪,這個回答也是解釋代碼注釋。

https://stackoverflow.com/questions/42189195/why-threadpoolexecutorworker-extends-abstractqueuedsynchronizer

很奇怪怎么thread自己怎么會有分身術(shù)肴熏,在專注與運行task的時候怎么會去調(diào)用setCorePoolSize呢鬼雀?

protected void beforeExecute(Thread t, Runnable r) { }

這方法在ThreadPoolExecutor里, 可以重寫蛙吏, 它在task.run 之前被調(diào)用源哩,故還是有這種機會的。afterExecute同理鸦做。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末励烦,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子泼诱,更是在濱河造成了極大的恐慌坛掠,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坷檩,死亡現(xiàn)場離奇詭異却音,居然都是意外死亡改抡,警方通過查閱死者的電腦和手機矢炼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來阿纤,“玉大人句灌,你說我怎么就攤上這事。” “怎么了胰锌?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵骗绕,是天一觀的道長。 經(jīng)常有香客問我资昧,道長酬土,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任格带,我火速辦了婚禮撤缴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘叽唱。我一直安慰自己屈呕,他們只是感情好,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布棺亭。 她就那樣靜靜地躺著虎眨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪镶摘。 梳的紋絲不亂的頭發(fā)上嗽桩,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天,我揣著相機與錄音钉稍,去河邊找鬼涤躲。 笑死,一個胖子當著我的面吹牛贡未,可吹牛的內(nèi)容都是我干的种樱。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼俊卤,長吁一口氣:“原來是場噩夢啊……” “哼嫩挤!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起消恍,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤岂昭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后狠怨,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體约啊,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年佣赖,在試婚紗的時候發(fā)現(xiàn)自己被綠了恰矩。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡憎蛤,死狀恐怖外傅,靈堂內(nèi)的尸體忽然破棺而出纪吮,到底是詐尸還是另有隱情,我是刑警寧澤萎胰,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布碾盟,位于F島的核電站,受9級特大地震影響技竟,放射性物質(zhì)發(fā)生泄漏冰肴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一榔组、第九天 我趴在偏房一處隱蔽的房頂上張望嚼沿。 院中可真熱鬧,春花似錦瓷患、人聲如沸骡尽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽攀细。三九已至,卻和暖如春爱态,著一層夾襖步出監(jiān)牢的瞬間谭贪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工锦担, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留俭识,地道東北人。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓洞渔,卻偏偏與公主長得像套媚,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子磁椒,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359

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

  • 前言 JDK中為我們提供了一個并發(fā)線程框架堤瘤,它是的我們可以在有異步任務(wù)或大量并發(fā)任務(wù)需要執(zhí)行時可以使用它提供的線程...
    Justlearn閱讀 1,787評論 0 10
  • 背景 10月2號凌晨12:08收到報警,所有請求失敗浆熔,處于完全不可用狀態(tài) 應(yīng)用服務(wù)器共四臺resin本辐,resin之...
    AGIHunt閱讀 22,038評論 6 16
  • 初識巴厘島,覺得浪漫風情医增。所有的畫面都是無邊泳池慎皱、大海,藍得過分的天空叶骨。窈窕女子茫多,耳際別著雞蛋花,吹著海風邓萨,...
    逸清777輕時光閱讀 380評論 2 0
  • 那是四月芳菲初現(xiàn)的時候地梨,翠柳白杏,粉桃暗香缔恳,極盡華美炫麗宝剖。 她,一身粉紅的細紗逶迤三尺歉甚,足間輕點万细,在桃樹下婆娑起舞...
    雪初閱讀 480評論 1 10
  • 一個好的產(chǎn)品要想贏得用戶的芳心,就要貼近用戶的心纸泄,所以用戶的心情赖钞,你要懂~ 【用戶5個常見心理】 找托效應(yīng)(A與B...
    漫話時光閱讀 223評論 4 3