private static final class AbstractFuture.SynchronizedHelper extends AbstractFuture.AtomicHelper
AbstractFuture.AtomicHelper based on synchronized and volatile writes.
This is an implementation of last resort for when certain basic VM features are broken (like AtomicReferenceFieldUpdater).
| Modifier | Constructor and Description |
|---|---|
private |
SynchronizedHelper() |
| 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. |
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.AtomicHelperAbstractFuture.waiters field.casWaiters in class AbstractFuture.AtomicHelperboolean casListeners(AbstractFuture<?> future, @CheckForNull AbstractFuture.Listener expect, AbstractFuture.Listener update)
AbstractFuture.AtomicHelperAbstractFuture.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.AtomicHelperAbstractFuture.value field.casValue in class AbstractFuture.AtomicHelper