## 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
`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
`ExecutionService.DistributedFuture.Sync(ExecutionService.DistributedFuture<V> future, java.util.concurrent.Callable<V> callable)`

Method Summary
`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.