Class ConcurrentUtils
- java.lang.Object
-
- io.servicetalk.concurrent.internal.ConcurrentUtils
-
public final class ConcurrentUtils extends java.lang.Object
Utilities which can be used for concurrency.
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static <T> boolean
releaseLock(java.util.concurrent.atomic.AtomicIntegerFieldUpdater<T> lockUpdater, T owner)
Release a lock that was previously acquired viatryAcquireLock(AtomicIntegerFieldUpdater, Object)
.static <T> boolean
releaseReentrantLock(java.util.concurrent.atomic.AtomicLongFieldUpdater<T> lockUpdater, long acquireId, T owner)
Release a lock that was previously acquired viatryAcquireReentrantLock(AtomicLongFieldUpdater, Object)
.static <T> boolean
tryAcquireLock(java.util.concurrent.atomic.AtomicIntegerFieldUpdater<T> lockUpdater, T owner)
Acquire a lock that is exclusively held with no re-entry, but attempts to acquire the lock while it is held can be detected byreleaseLock(AtomicIntegerFieldUpdater, Object)
.static <T> long
tryAcquireReentrantLock(java.util.concurrent.atomic.AtomicLongFieldUpdater<T> lockUpdater, T owner)
Acquire a lock that allows reentry and attempts to acquire the lock while it is held can be detected byreleaseReentrantLock(AtomicLongFieldUpdater, long, Object)
.
-
-
-
Method Detail
-
tryAcquireLock
public static <T> boolean tryAcquireLock(java.util.concurrent.atomic.AtomicIntegerFieldUpdater<T> lockUpdater, T owner)
Acquire a lock that is exclusively held with no re-entry, but attempts to acquire the lock while it is held can be detected byreleaseLock(AtomicIntegerFieldUpdater, Object)
.- Type Parameters:
T
- The type of object that owns the lock.- Parameters:
lockUpdater
- TheAtomicIntegerFieldUpdater
used to control the lock state.owner
- The owner of the lock object.- Returns:
true
if the lock was acquired,false
otherwise.
-
releaseLock
public static <T> boolean releaseLock(java.util.concurrent.atomic.AtomicIntegerFieldUpdater<T> lockUpdater, T owner)
Release a lock that was previously acquired viatryAcquireLock(AtomicIntegerFieldUpdater, Object)
.- Type Parameters:
T
- The type of object that owns the lock.- Parameters:
lockUpdater
- TheAtomicIntegerFieldUpdater
used to control the lock state.owner
- The owner of the lock object.- Returns:
true
if the lock was released, and no other attempts were made to acquire the lock while it was held.false
if the lock was released but another attempt was made to acquire the lock before it was released.
-
tryAcquireReentrantLock
public static <T> long tryAcquireReentrantLock(java.util.concurrent.atomic.AtomicLongFieldUpdater<T> lockUpdater, T owner)
Acquire a lock that allows reentry and attempts to acquire the lock while it is held can be detected byreleaseReentrantLock(AtomicLongFieldUpdater, long, Object)
.This lock must eventually be released by the same thread that acquired the lock. If the thread that acquires this lock is terminated before releasing the lock state is undefined.
- Type Parameters:
T
- The type of object that owns the lock.- Parameters:
lockUpdater
- TheAtomicLongFieldUpdater
used to control the lock state.owner
- The owner of the lock object.- Returns:
0
if the acquire was unsuccessful, otherwise an identifier that must be passed to a subsequent call ofreleaseReentrantLock(AtomicLongFieldUpdater, long, Object)
.
-
releaseReentrantLock
public static <T> boolean releaseReentrantLock(java.util.concurrent.atomic.AtomicLongFieldUpdater<T> lockUpdater, long acquireId, T owner)
Release a lock that was previously acquired viatryAcquireReentrantLock(AtomicLongFieldUpdater, Object)
.- Type Parameters:
T
- The type of object that owns the lock.- Parameters:
lockUpdater
- TheAtomicLongFieldUpdater
used to control the lock state.acquireId
- The value returned from the previous call totryAcquireReentrantLock(AtomicLongFieldUpdater, Object)
.owner
- The owner of the lock object.- Returns:
true
if the lock was released, or releases a prior re-entrant acquire, and no other attempts were made to acquire the lock while it was held.false
if the lock was released but another attempt was made to acquire the lock before it was released.
-
-