synchronized 鎖的重入

2021-10-09 12:29:20 字數 1096 閱讀 2871

1、

/乙個同步方法呼叫另外乙個同步方法,能否得到鎖?

//重入 synchronized預設支援重入

@slf4j(topic = "test")

public class demo catch (interruptedexception e)

test2();

}/**

* 為什麼test2還需要加sync

** 他本身就包含在test1 而test1已經加了sync

*/synchronized void test2() catch (interruptedexception e)

log.debug("test2 start.......");

}public static void main(string args)

}

執行結果

17:20:57.866 [main] debug test - test1 start.........

17:21:00.872 [main] debug test - test2 start.......

2、

/這裡是重入鎖的另外一種情況,繼承

@slf4j(topic = "test")

public class demo catch (interruptedexception e)

log.debug("demo test end........");

}public static void main(string args)

}@slf4j(topic = "test")

class demo2 extends demo

}

執行結果

17:21:39.129 [main] debug test - demo2 test start........

17:21:39.135 [main] debug test - demo test start........

17:21:40.137 [main] debug test - demo test end........

17:21:40.137 [main] debug test - demo2 test end........

synchronized 修飾的鎖

datetime 2020 11 25 21 14 author db public class concurrency private static void lockcode private static void lockmethod 鎖的是物件例項方法,同一物件是同步的,不同物件是非同步的 ...

synchronized鎖的公升級

在分析markword時,提到了偏向鎖 輕量級鎖 重量級鎖。在分析這幾種鎖的區別時,我們先來思考乙個問題 使用鎖能夠實現資料的安全性,但是會帶來效能的下降。不使用鎖能夠基於執行緒並行提公升程式效能,但是卻不能保證執行緒安全性。這兩者之間似乎是沒有辦法達到既能滿足效能也能滿足安全性的要求。hotspo...

synchronized的鎖問題

題描述 有乙個類a,提供了三個方法。分別是靜態同步方法,非靜態同步方法,含有靜態 塊的方法 class a public synchronized void print2 public void print3 private static void print 四種情況的輸出結果 class tes...