org.jgroups.blocks.executor

## Class ExecutionService.DistributedFuture.Sync<V>

- java.lang.Object
- - java.util.concurrent.locks.AbstractOwnableSynchronizer
  - - java.util.concurrent.locks.AbstractQueuedSynchronizer
    - - org.jgroups.blocks.executor.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 and 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

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ExecutionService.DistributedFuture.Sync(ExecutionService.DistributedFuture<V> future, java.util.concurrent.Callable<V> callable)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and 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, 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

    - #### future

          protected final ExecutionService.DistributedFuture<V> future

      The containing future

    - #### 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.

  - ### Constructor Detail

    - #### ExecutionService.DistributedFuture.Sync

          public ExecutionService.DistributedFuture.Sync(ExecutionService.DistributedFuture<V> future,
                                                 java.util.concurrent.Callable<V> callable)

  - ### 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`

Copyright © 1998-2009 Bela Ban / Red Hat. All Rights Reserved.