Java輕量鎖 偏向鎖 自旋鎖 重量鎖

2021-08-29 22:37:33 字數 367 閱讀 4654

巨集觀上分為:悲觀鎖、樂觀鎖

悲觀鎖:認為寫多讀少,每次都會上鎖。

樂觀鎖:讀多寫少。

自旋鎖:如果持有鎖的執行緒能在很短的時間內釋放資源,那麼那些等待競爭鎖的執行緒就不需要做核心態與使用者態之間的切換進入阻塞狀態,只需要等一等(自旋),等待有鎖的執行緒釋放鎖後即可立即獲取鎖,避免使用者執行緒與核心的切換消耗。自旋的過程是需要消耗cpu的,就是讓cpu做無用功。

重量鎖:synchronized保證同步。

偏向鎖:他會偏向第乙個訪問鎖的執行緒,如果在執行過程中,同步鎖只有乙個執行緒訪問,不存在多執行緒爭用的情況,則執行緒是不需要出發同步的,這種情況就會給執行緒加乙個偏向鎖。如果有其他執行緒搶占鎖,持有偏向鎖的執行緒會被掛起,jvm消除它身上的偏向鎖,將鎖恢復到輕量級鎖。

偏向鎖 輕量鎖與重量鎖,你真的了解嗎?

在jdk1.6之前,鎖是由c 提供的objectmonitor來維護。objectmonitor 幫我們封裝了阻塞佇列 同步佇列,加鎖,釋放鎖.的複雜流程,其底層呼叫作業系統的函式來實現執行緒同步,以及執行緒切換等操作。在一些併發不高,或者甚至沒有併發的場景下,這些操作很浪費系統資源。所以,jvm對...

偏向鎖,輕量級鎖,重量級鎖(java)

輕量級鎖是jdk 1.6之中加入的新型鎖機制,它名字中的 輕量級 是相對於使用作業系統互斥量來實現的傳統鎖而言的,因此傳統的鎖機制就稱為 重量級 鎖。首先需要強調一點的是,輕量級鎖並不是用來代替重量級鎖的,它的本意是在沒有多執行緒競爭的前提下,減少傳統的重量級鎖使用作業系統互斥量產生的效能消耗。要理...

Java併發 偏向鎖 輕量級鎖 重量級鎖

鎖的狀態一共有四種 無鎖 偏向鎖 輕量級鎖 重量級鎖 鎖的狀態儲存在物件的標頭檔案中,以32位jdk為例 鎖狀態25 bit 4bit 1bit 2bit 23bit 2bit 是否是偏向鎖 鎖標誌位 輕量級鎖 指向棧中鎖記錄的指標 00重量級鎖 指向互斥量 重量級鎖 的指標 10gc標記空11 偏...