private static final class AbstractFuture.UnsafeAtomicHelper extends AbstractFuture.AtomicHelper
AbstractFuture.AtomicHelper based on Unsafe.
Static initialization of this class will fail if the Unsafe object cannot
be accessed.
| Modifier and Type | Field and Description |
|---|---|
(package private) static long |
LISTENERS_OFFSET |
(package private) static sun.misc.Unsafe |
UNSAFE |
(package private) static long |
VALUE_OFFSET |
(package private) static long |
WAITER_NEXT_OFFSET |
(package private) static long |
WAITER_THREAD_OFFSET |
(package private) static long |
WAITERS_OFFSET |
| Modifier | Constructor and Description |
|---|---|
private |
UnsafeAtomicHelper() |
| Modifier and Type | Method and Description |
|---|---|
(package private) boolean |
casListeners(AbstractFuture<?> future,
AbstractFuture.Listener expect,
AbstractFuture.Listener update)
Performs a CAS operation on the
AbstractFuture.listeners field. |
(package private) boolean |
casValue(AbstractFuture<?> future,
java.lang.Object expect,
java.lang.Object update)
Performs a CAS operation on the
AbstractFuture.value field. |
(package private) boolean |
casWaiters(AbstractFuture<?> future,
AbstractFuture.Waiter expect,
AbstractFuture.Waiter update)
Performs a CAS operation on the
AbstractFuture.waiters field. |
(package private) AbstractFuture.Listener |
gasListeners(AbstractFuture<?> future,
AbstractFuture.Listener update)
Performs a GAS operation on the
AbstractFuture.listeners field. |
(package private) AbstractFuture.Waiter |
gasWaiters(AbstractFuture<?> future,
AbstractFuture.Waiter update)
Performs a GAS operation on the
AbstractFuture.waiters field. |
(package private) void |
putNext(AbstractFuture.Waiter waiter,
AbstractFuture.Waiter newValue)
Non volatile write of the waiter to the
AbstractFuture.Waiter.next field. |
(package private) void |
putThread(AbstractFuture.Waiter waiter,
java.lang.Thread newValue)
Non volatile write of the thread to the
AbstractFuture.Waiter.thread field. |
static final sun.misc.Unsafe UNSAFE
static final long LISTENERS_OFFSET
static final long WAITERS_OFFSET
static final long VALUE_OFFSET
static final long WAITER_THREAD_OFFSET
static final long WAITER_NEXT_OFFSET
void putThread(AbstractFuture.Waiter waiter, java.lang.Thread newValue)
AbstractFuture.AtomicHelperAbstractFuture.Waiter.thread field.putThread in class AbstractFuture.AtomicHelpervoid putNext(AbstractFuture.Waiter waiter, @CheckForNull AbstractFuture.Waiter newValue)
AbstractFuture.AtomicHelperAbstractFuture.Waiter.next field.putNext in class AbstractFuture.AtomicHelperboolean casWaiters(AbstractFuture<?> future, @CheckForNull AbstractFuture.Waiter expect, @CheckForNull AbstractFuture.Waiter update)
AbstractFuture.waiters field.casWaiters in class AbstractFuture.AtomicHelperboolean casListeners(AbstractFuture<?> future, @CheckForNull AbstractFuture.Listener expect, AbstractFuture.Listener update)
AbstractFuture.listeners field.casListeners in class AbstractFuture.AtomicHelperAbstractFuture.Listener gasListeners(AbstractFuture<?> future, AbstractFuture.Listener update)
AbstractFuture.listeners field.gasListeners in class AbstractFuture.AtomicHelperAbstractFuture.Waiter gasWaiters(AbstractFuture<?> future, AbstractFuture.Waiter update)
AbstractFuture.waiters field.gasWaiters in class AbstractFuture.AtomicHelperboolean casValue(AbstractFuture<?> future, @CheckForNull java.lang.Object expect, java.lang.Object update)
AbstractFuture.value field.casValue in class AbstractFuture.AtomicHelper