Class ExecutionService.DistributedFuture.Sync<V>

  • All Implemented Interfaces:
    java.io.Serializable
    Enclosing class:
    ExecutionService.DistributedFuture<V>

    protected static final class ExecutionService.DistributedFuture.Sync<V>
    extends java.util.concurrent.locks.AbstractQueuedSynchronizer
    Synchronization control for FutureTask. Note that this must be a non-static inner class in order to invoke the protected done method. For clarity, all inner class support methods are same as outer, prefixed with "inner". Uses AQS sync state to represent run status
    See Also:
    Serialized Form
    • Nested Class Summary

      • Nested classes/interfaces inherited from class java.util.concurrent.locks.AbstractQueuedSynchronizer

        java.util.concurrent.locks.AbstractQueuedSynchronizer.ConditionObject
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected java.util.concurrent.Callable<V> callable
      The underlying callable
      protected static int CANCELLED
      State value representing that task was cancelled
      protected java.lang.Throwable exception
      The exception to throw from get()
      protected ExecutionService.DistributedFuture<V> future
      The containing future
      protected static int RAN
      State value representing that task ran
      protected V result
      The result to return from get()
      protected java.lang.Thread runner
      The thread running task.
      protected static int RUNNING
      State value representing that task is running
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected int tryAcquireShared​(int ignore)
      Implements AQS base acquire to succeed if ran or cancelled
      protected boolean tryReleaseShared​(int ignore)
      Implements AQS base release to always signal after setting final done status by nulling runner thread.
      • Methods inherited from class java.util.concurrent.locks.AbstractQueuedSynchronizer

        acquire, acquireInterruptibly, acquireShared, acquireSharedInterruptibly, compareAndSetState, getExclusiveQueuedThreads, getFirstQueuedThread, getQueuedThreads, getQueueLength, getSharedQueuedThreads, getState, getWaitingThreads, getWaitQueueLength, hasContended, hasQueuedPredecessors, hasQueuedThreads, hasWaiters, isHeldExclusively, isQueued, owns, release, releaseShared, setState, toString, tryAcquire, tryAcquireNanos, tryAcquireSharedNanos, tryRelease
      • Methods inherited from class java.util.concurrent.locks.AbstractOwnableSynchronizer

        getExclusiveOwnerThread, setExclusiveOwnerThread
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • RUNNING

        protected static final int RUNNING
        State value representing that task is running
        See Also:
        Constant Field Values
      • RAN

        protected static final int RAN
        State value representing that task ran
        See Also:
        Constant Field Values
      • CANCELLED

        protected static final int CANCELLED
        State value representing that task was cancelled
        See Also:
        Constant Field Values
      • callable

        protected final java.util.concurrent.Callable<V> callable
        The underlying callable
      • result

        protected V result
        The result to return from get()
      • exception

        protected java.lang.Throwable exception
        The exception to throw from get()
      • runner

        protected transient volatile java.lang.Thread runner
        The thread running task. When nulled after set/cancel, this indicates that the results are accessible. Must be volatile, to ensure visibility upon completion.
    • Method Detail

      • tryAcquireShared

        protected int tryAcquireShared​(int ignore)
        Implements AQS base acquire to succeed if ran or cancelled
        Overrides:
        tryAcquireShared in class java.util.concurrent.locks.AbstractQueuedSynchronizer
      • tryReleaseShared

        protected boolean tryReleaseShared​(int ignore)
        Implements AQS base release to always signal after setting final done status by nulling runner thread.
        Overrides:
        tryReleaseShared in class java.util.concurrent.locks.AbstractQueuedSynchronizer