16 LockSupport原始碼分析

2021-09-02 04:10:17 字數 964 閱讀 8930

locksupport原始碼分析

主要用於提供阻塞執行緒,和解除阻塞的方法。通過unsafe來實現的。

屬性方法總結

final long parkblockeroffset 執行緒中parkblocker屬性的偏移量

可以通過該偏移位址獲取或者設定該字段的值,即修改獲取thread下的parkblocker屬性值。

建構函式:私有,無法被例項化

unpark(t):呼叫unsafe的方法,喚醒執行緒t

如果給定的執行緒,其許可不可用,則設定其可用;如果可用,則設定該執行緒下一次呼叫park()時無效,即仍舊可用。如果執行緒未啟動,無無效。

park(object blocker):阻塞當前執行緒到物件blocker

getblocker/setblocker: 設定執行緒的阻塞者物件

記錄執行緒是被誰阻塞的,用於執行緒監控及分析工具來定位原因

對執行緒中斷的響應性研究

執行緒如果因為呼叫park而阻塞的話,能夠響應中斷請求(中斷狀態被設定成true),但是不會丟擲interruptedexception。

**實現

執行結果

多執行緒學習大綱:

AbstractCollection原始碼分析

abstractcollection抽象類提供了collection的骨架實現,collection分析請看 這裡直接看它的 是如何實現的.public abstract iterator iterator 該方法沒有實現.public abstract int size 該方法沒有實現.publi...

ThreadPoolExecutor原始碼閱讀

執行緒池解決兩個問題 一是復用執行緒,減少建立銷毀執行緒帶來系統開銷 二是限定系統資源使用邊界,避免大量執行緒消耗盡系統記憶體 適用於互不依賴,執行時間短,不需要對執行緒控制操作的執行緒 新增任務時,1.若執行緒數量小於corepoolsize,則新增執行緒執行任務 2.若執行緒數量大於等於core...

OrangePi One Android 原始碼編譯

一 系統環境搭建參照 二 lichee原始碼編譯 1.檢視help build.sh h2.配置核心 cd linux 3.4 make arch arm menuconfig 進入配置頁面,上下移動列表,空格是選擇列表,左右移動選擇退出選項 3.首次編譯執行清除 在 lichee linux3.4...