在分析markword時,提到了偏向鎖、輕量級鎖、重量級鎖。在分析這幾種鎖的區別時,我們先來思考乙個問題
使用鎖能夠實現資料的安全性,但是會帶來效能的下降。不使用鎖能夠基於執行緒並行提公升程式效能,但是卻不能保證執行緒安全性。這兩者之間似乎是沒有辦法達到既能滿足效能也能滿足安全性的要求。
hotspot虛擬機器的作者經過調查發現,大部分情況下,加鎖的**不僅僅不存在多執行緒競爭,而且總是由同乙個執行緒多次獲得。所以基於這樣乙個概率,是的synchronized在jdk1.6之後做了一些優化,為了減少獲得鎖和釋放鎖帶來的效能開銷,引入了偏向鎖、輕量級鎖的概念。因此大家會發現在synchronized中,鎖存在四種狀態
分別是:無鎖、偏向鎖、輕量級鎖、重量級鎖; 鎖的狀態根據競爭激烈的程度從低到高不斷公升級
synchronized 鎖的重入
1 乙個同步方法呼叫另外乙個同步方法,能否得到鎖?重入 synchronized預設支援重入 slf4j topic test public class demo catch interruptedexception e test2 為什麼test2還需要加sync 他本身就包含在test1 而te...
synchronized 修飾的鎖
datetime 2020 11 25 21 14 author db public class concurrency private static void lockcode private static void lockmethod 鎖的是物件例項方法,同一物件是同步的,不同物件是非同步的 ...
synchronized的鎖問題
題描述 有乙個類a,提供了三個方法。分別是靜態同步方法,非靜態同步方法,含有靜態 塊的方法 class a public synchronized void print2 public void print3 private static void print 四種情況的輸出結果 class tes...