上一篇《聊聊同步才菠、異步茸时、阻塞與非阻塞》[http://www.reibang.com/p/aed6067eeac9]已經(jīng)通俗的講解了,要理解同步赋访、異步可都、阻塞與非阻塞重要的兩...
剛剛 用 idea debug 了 一下 源碼,發(fā)現(xiàn)你說的 中斷的 描述 不夠 準(zhǔn)確鼎兽,
1. 如果 當(dāng)前線程 是 非中斷狀態(tài)(不是 第一次 調(diào)用 Thread.interrupted()),此時遇到 LockSupport.park( ) 會立刻阻塞
2. 如果當(dāng)前線程 是 中斷 狀態(tài) 答姥,那么 LockSupport.park( ) 失效,接下來 調(diào)用 Thread.intrrupted() 方法 返回 此時 的 中斷狀態(tài) 谚咬,也就是 True 鹦付,同時 會 清除 線程 的 中斷狀態(tài),但是 此時 調(diào)用 LockSupport.park( ) 還是會失效的择卦, 也就是 說 在 非 連續(xù)兩次 調(diào)用 Thread.interrupted() 方法敲长,那么
LockSupport.park( ) 執(zhí)行兩次 才會生效 郎嫁,也就是 Thread.interrupted()-------->LockSupport.park( ) 失效 ------>此時線程的狀態(tài)是 false,也就是 中斷狀態(tài)已經(jīng)重置了-------->LockSupport.park( ) 失效------------------>LockSupport.park( ) 成功阻塞 或者 直接 Thread.interrupted()-------->LockSupport.park( ) 失效 ------>此時線程的狀態(tài)是 false,也就是 中斷狀態(tài)已經(jīng)重置了-------->Thread.interrupted()------------------->LockSupport.park( ) 阻塞
深入理解AbstractQueuedSynchronizer(一)博客鏈接:http://www.ideabuffer.cn/2017/03/15/深入理解AbstractQueuedSynchronizer(一)/ AbstractQue...
你提到 在 拋出異常的時候 finally 中的代碼 才會 執(zhí)行 ,那么我想 問 什么時候 才能拋出異常呢 祈噪? 哪個地方 可能會拋出異常呢 泽铛? 我沒找到,請指點(diǎn)一下钳降,謝謝 厚宰!
深入理解AbstractQueuedSynchronizer(一)博客鏈接:http://www.ideabuffer.cn/2017/03/15/深入理解AbstractQueuedSynchronizer(一)/ AbstractQue...