實現可重入鎖

2021-09-29 17:15:42 字數 1134 閱讀 1883

/**

* 可重入鎖

*/public

class

myreentrantlock

implements

lock

/** * 判斷該鎖是否已被占用如果占用則讓其等待

*/@override

public

synchronized

void

lock()

catch

(interruptedexception e)

} lockstuta =

true

; presentthread = thread.

currentthread()

; reentrantlocknum++;}

@override

public

void

lockinterruptibly()

throws interruptedexception

@override

public

boolean

trylock()

@override

public

boolean

trylock

(long time, timeunit unit)

throws interruptedexception

@override

public

synchronized

void

unlock()

}}@override

public condition newcondition()

public

static myreentrantlock getmyreentrantlockbean()

}}return myreentrantlock;

}}

在執行my.lock()時會對當前執行緒進行記錄,下次執行my.lock()時候就會進行判斷,並對可重入鎖數量進行記錄,就不會導致一直等待現象,如果其他執行緒呼叫的話就會進入等待狀態,直到鎖被釋放!

本人小白,如有錯誤**以指正!

可重入鎖 不可重入鎖

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

鎖 可重入鎖

reetrantlick相對於 synchronized 的優勢 reentrantlock獨有的能力 1.reentrantlock可以指定是公平鎖還是非公平鎖。而synchronized只能是非公平鎖。所謂的公平鎖就是先等待的執行緒先獲得鎖。2.reentrantlock提供了乙個conditi...

可重入鎖和不可重入鎖

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