org.jgroups.blocks.executor
Class ExecutionService.DistributedFuture.Sync<V>

java.lang.Object
  extended by java.util.concurrent.locks.AbstractOwnableSynchronizer
      extended by java.util.concurrent.locks.AbstractQueuedSynchronizer
          extended by 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-2012 Bela Ban / Red Hat. All Rights Reserved.