Java之多執行緒之鎖重入

2021-07-24 21:23:04 字數 574 閱讀 3933

一、什麼叫鎖重入

1.在多執行緒同步中,使用synchronized進行同步處理時,會對物件加鎖處理,啟用物件的互斥唯一性。

2.在乙個執行緒執行到同步**並獲得物件的鎖時,如果在該同步**內部又繼續呼叫了本類的其他同步方法,也可以執行;這就表明了鎖重入。

3。當乙個執行緒得到乙個物件的鎖後,再次請求該物件時可以再次得到該物件的鎖。這表明在乙個synchronized方法、塊的內部繼續呼叫本類的其他synchronized時,時永遠可以得到鎖的。

4.附例:

public class test implements runnable

public synchronized void set()

@override

public void run()

public static void main(string args) 上例中,即執行緒執行到get方法時,獲得物件的鎖;在get方法內部呼叫本類的同步set方法,則依然會獲得該物件的鎖;繼續執行。

總結:自己可以再次獲取自己的內部鎖。

可重入鎖也支援在父子類繼承的環境中,子類完全可以通過「可重入鎖」呼叫父類的同步方法。

多執行緒之重入鎖ReentrantLock

void lock 獲取鎖,一直等待,直到拿到鎖,不可被打斷 void lockinterruptibly throws interruptedexception.獲取鎖,可被打斷 boolean trylock 嘗試拿鎖,拿到返回ture,拿不到返回false boolean trylock lo...

多執行緒之可重入鎖

當乙個執行緒得到物件鎖後,再次請求此物件鎖時是可以再次得到改物件的鎖的 可重入鎖 的概念 自己可以再次獲得自己內部的鎖,比如有一條執行緒獲得了某個物件的鎖,此時這個物件的鎖還沒有釋放,當再次獲取這個物件的鎖的時候還是可以獲取的,如果不可鎖重入的話就會造成死鎖。例如 synchronized和reen...

java 多執行緒 可重入鎖RentrantLock

1.業務場景,實現乙個排隊功能,比如 1,2,3 執行完成之後,重新從1,2,3 繼續執行下去 public static void main string args start new thread new runnable start new thread new runnable start ...