多執行緒鎖的公升級和無鎖 偏向鎖 輕量級鎖 重量級鎖

2021-09-25 04:38:48 字數 428 閱讀 4033

隨著競爭情況逐漸公升級,鎖可以公升級但不能降級。

鎖一共四種狀態,低-->高無鎖狀態、偏向鎖狀態、輕量級鎖狀態、重量級鎖狀態

偏向鎖:

優點:加鎖和解鎖不需要額外的消耗,和執行非同步方法相逼僅存在納秒級的差距。

缺點:如果執行緒間存在鎖競爭,會帶來額外的鎖撤銷的消耗(適用只有乙個執行緒訪問同步塊場景)

輕量級鎖:

優點:競爭的執行緒不會阻塞,提高了程式的響應速度

缺點:如果始終得不到鎖競爭的執行緒會自旋消耗cpu (追求響應時間,同步塊執行速度非常快)

重量級鎖:

優點:執行緒競爭不使用自旋,不會消耗cpu

缺點:執行緒阻塞,響應時間緩慢 (追求吞吐量,同步塊執行速度較長)

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

巨集觀上分為 悲觀鎖 樂觀鎖 悲觀鎖 認為寫多讀少,每次都會上鎖。樂觀鎖 讀多寫少。自旋鎖 如果持有鎖的執行緒能在很短的時間內釋放資源,那麼那些等待競爭鎖的執行緒就不需要做核心態與使用者態之間的切換進入阻塞狀態,只需要等一等 自旋 等待有鎖的執行緒釋放鎖後即可立即獲取鎖,避免使用者執行緒與核心的切換...

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

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

執行緒和鎖,鎖公升級

程式 qq.exe feiqiu.exe 這種靜靜的躺在硬碟的軟體 程序 當程式載入到記憶體進行執行的就是程序資源分配的基本單位 執行緒 是程式執行的基本單位 執行緒如何進行排程的?linux是執行緒排程器,os 作業系統 執行緒切換的概念是什麼?context switch cpu儲存現場執行新執...