關鍵字synchronized擁有鎖重入的功能,也就是在使用synchronized時,當乙個執行緒得到乙個物件鎖後,再次請求此物件鎖時是再次得到該物件的鎖的,這也證明在乙個synchronized方法 / 塊內部呼叫本類的其他synchronized方法 / 塊時,是永遠可以得到鎖的。
「可重入鎖」的概念是:自己可以再次獲取自己的內部鎖。
demo**如下:
public class demoservicereentrencelock catch (exception e)
} synchronized public void service2() catch (exception e)
} synchronized public void service3()
}
public class testdemoservicereentrencelock extends thread
@override
public void run()
public static void main(string args)
}
//執行結果:
thread-1 - service1 獲取鎖 - 463506790016015
thread-1 - service1 - 1540134076620
thread-1 - service2 獲取鎖 - 463511789963967
thread-1 - service2 - 1540134081620
thread-1 - service3 獲取鎖 - 463511790385900
thread-1 - service3 - 1540134081620
thread-1 - service3釋放鎖 - 463511790751518
thread-1 - service2 釋放鎖 - 463511790895718
thread-1 - service1 釋放鎖 - 463511791731904
thread-3 - service1 獲取鎖 - 463511792423465
thread-3 - service1 - 1540134081622
thread-3 - service2 獲取鎖 - 463516794723832
thread-3 - service2 - 1540134086625
thread-3 - service3 獲取鎖 - 463516794978527
thread-3 - service3 - 1540134086625
thread-3 - service3釋放鎖 - 463516795099263
thread-3 - service2 釋放鎖 - 463516795154724
thread-3 - service1 釋放鎖 - 463516795207199
thread-2 - service1 獲取鎖 - 463516796485370
thread-2 - service1 - 1540134086627
thread-2 - service2 獲取鎖 - 463521795939716
thread-2 - service2 - 1540134091627
thread-2 - service3 獲取鎖 - 463521796082209
thread-2 - service3 - 1540134091627
thread-2 - service3釋放鎖 - 463521796205930
thread-2 - service2 釋放鎖 - 463521796272484
thread-2 - service1 釋放鎖 - 463521796344157
synchronized 鎖的重入
1 乙個同步方法呼叫另外乙個同步方法,能否得到鎖?重入 synchronized預設支援重入 slf4j topic test public class demo catch interruptedexception e test2 為什麼test2還需要加sync 他本身就包含在test1 而te...
synchronized鎖重入問題
先說結論 乙個執行緒得到了乙個物件的方法後,還可以呼叫這個物件的其他加鎖的方法,乙個執行緒執行在進入了子類的方法後,還可以呼叫父類的加鎖方法。如下面所示 package com.lydon.thread public class syncdubbo public synchronized void ...
synchronized鎖的重入問題
我們知道通過synchronized關鍵字修飾的方法或 塊在同一時刻只能被乙個執行緒訪問,還有一種就是鎖的重入問題,就是乙個執行緒可以訪問多個被synchronized修飾的方法或 塊,如下 package com.xiayc.sync public class reentrantsynchroni...