多執行緒之可重入鎖

2021-08-14 10:39:18 字數 484 閱讀 2364

當乙個執行緒得到物件鎖後,再次請求此物件鎖時是可以再次得到改物件的鎖的

「可重入鎖」的概念:自己可以再次獲得自己內部的鎖,比如有一條執行緒獲得了某個物件的鎖,此時這個物件的鎖還沒有釋放,當再次獲取這個物件的鎖的時候還是可以獲取的,如果不可鎖重入的話就會造成死鎖。

例如:synchronized和reentranlock都是可重入鎖

public class service 

synchronized public void service2()

synchronized public void service3()

}public class mythread extends thread

public static void main(string args)

}

列印結果:

service1

service2

service3

多執行緒四 可重入鎖

自己可以再次獲取自己的內部鎖。比如有1調執行緒獲得了某個物件的鎖,此時這個物件鎖還沒有釋放,當其再次想要獲取這個物件的鎖的時候還是可以獲取的,如果不可鎖重入的話,就會造成死鎖。可重入鎖也支援在父類繼承的環境中。即子類鎖中呼叫了父類帶鎖函式 普通可重入鎖示例 public class service ...

多執行緒之重入鎖ReentrantLock

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

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 ...