Class KeyedLock<T>
- java.lang.Object
-
- org.elasticsearch.common.util.concurrent.KeyedLock<T>
-
public final class KeyedLock<T> extends java.lang.ObjectThis class manages locks. Locks can be accessed with an identifier and are created the first time they are acquired and removed if no thread hold the lock. The latter is important to assure that the list of locks does not grow infinitely. Note: this lock is reentrant
-
-
Method Summary
Modifier and Type Method Description Releasableacquire(T key)Acquires a lock for the given key.booleanhasLockedKeys()Returnstrueif this lock has at least one locked key.booleanisHeldByCurrentThread(T key)Returnstrueiff the caller thread holds the lock for the given keyReleasabletryAcquire(T key)Tries to acquire the lock for the given key and returns it.
-
-
-
Method Detail
-
acquire
public Releasable acquire(T key)
Acquires a lock for the given key. The key is compared by it's equals method not by object identity. The lock can be acquired by the same thread multiple times. The lock is released by closing the returnedReleasable.
-
tryAcquire
public Releasable tryAcquire(T key)
Tries to acquire the lock for the given key and returns it. If the lock can't be acquired null is returned.
-
isHeldByCurrentThread
public boolean isHeldByCurrentThread(T key)
Returnstrueiff the caller thread holds the lock for the given key
-
hasLockedKeys
public boolean hasLockedKeys()
Returnstrueif this lock has at least one locked key.
-
-