Class KeyedLock<T>
java.lang.Object
org.elasticsearch.common.util.concurrent.KeyedLock<T>
This 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
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionorg.elasticsearch.core.Releasable
Acquires a lock for the given key.boolean
Returnstrue
if this lock has at least one locked key.boolean
isHeldByCurrentThread(T key)
Returnstrue
iff the caller thread holds the lock for the given keyorg.elasticsearch.core.Releasable
tryAcquire(T key)
Tries to acquire the lock for the given key and returns it.
-
Constructor Details
-
KeyedLock
public KeyedLock(boolean fair)Creates a new lock- Parameters:
fair
- Use fair locking, ie threads get the lock in the order they requested it
-
KeyedLock
public KeyedLock()Creates a non-fair lock
-
-
Method Details
-
acquire
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
Tries to acquire the lock for the given key and returns it. If the lock can't be acquired null is returned. -
isHeldByCurrentThread
Returnstrue
iff the caller thread holds the lock for the given key -
hasLockedKeys
public boolean hasLockedKeys()Returnstrue
if this lock has at least one locked key.
-