可重入鎖和不可重入鎖

2021-08-21 20:14:44 字數 962 閱讀 1440

當乙個執行緒獲得當前例項的鎖lock,並且進入了方法a,該執行緒在方法a沒有釋放該鎖的時候,是否可以再次進入使用該鎖的方法b?

不可重入鎖:在方法a釋放鎖之前,不可以再次進入方法b

可重入鎖:在方法a釋放該鎖之前可以再次進入方法b;如reentrantlock和synchronized

不可重入鎖的實現:

publicclass

lock

islocked

=true;

} publicvoid

unlock() }

可重入鎖的例項:

publicclass

reinnerlock

islocked

=true;

thread

= currentthread;

} publicvoid

unlock() }

publicclass

lockclient

void

read1()throws

interruptedexception

publicstaticvoid

main(string

args

)catch

(interruptedexception e)

} }

可重入鎖和不可重入鎖

可重入鎖就是可以迴圈迭代使用的鎖,不會產生死鎖的現象,典型的就是synchronized和reentrantlock。不可重入鎖迴圈迭代使用則有產生死鎖的風險。可重入鎖 class reentranttest implements runnable public synchronized void ...

可重入鎖和不可重入鎖

鎖就是把 塊 資源或資料 稱為臨界資源 鎖上,訪問臨界資源的時候只允許乙個執行緒去操作,其他執行緒必須等待或者放棄,這是為了保證最終程式的正確執行。public class lock islocked true public synchronized void unlock 使用上面定義的lock鎖...

可重入鎖 不可重入鎖

可重入鎖指的是可重複可遞迴呼叫的鎖,在外層使用鎖之後,在內層仍然可以使用,並且不發生死鎖 前提是同乙個物件或者類 note reentrantlock和synchronized都是可重入鎖 1 public class testlock 78 public synchronized void tes...