org.jgroups.blocks.executor
Class ExecutionService
java.lang.Object
java.util.concurrent.AbstractExecutorService
org.jgroups.blocks.executor.ExecutionService
- All Implemented Interfaces:
- java.util.concurrent.Executor, java.util.concurrent.ExecutorService
public class ExecutionService
- extends java.util.concurrent.AbstractExecutorService
This is a jgroups implementation of an ExecutorService, where the consumers
are running on any number of nodes. The nodes should run
ExecutionRunner
to start picking up requests.
Every future object returned will be a NotifyingFuture
which
allows for not having to query the future and have a callback instead. This
can then be used as a workflow to submit other tasks sequentially or also to
query the future for the value at that time.
Every callable or runnable submitted must be either Serializable
or
Streamable
. Also the value returned from
a callable must Serializable
or
Streamable
. Unfortunately if the value returned is not serializable
then a NotSerializableException
will be thrown as the cause.
- Since:
- 2.12.0
- Author:
- wburns
Method Summary |
boolean |
awaitTermination(long timeout,
java.util.concurrent.TimeUnit unit)
|
void |
execute(java.lang.Runnable command)
|
|
invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks)
|
|
invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks,
long timeout,
java.util.concurrent.TimeUnit unit)
|
boolean |
isShutdown()
|
boolean |
isTerminated()
|
protected
<T> java.util.concurrent.RunnableFuture<T> |
|
newTaskFor(java.util.concurrent.Callable<T> callable)
|
protected
<T> java.util.concurrent.RunnableFuture<T> |
|
newTaskFor(java.lang.Runnable runnable,
T value)
|
void |
setChannel(JChannel ch)
|
void |
shutdown()
|
java.util.List<java.lang.Runnable> |
shutdownNow()
|
|
submit(java.util.concurrent.Callable<T> task)
|
|
submit(java.lang.Runnable task,
T result)
|
Methods inherited from class java.util.concurrent.AbstractExecutorService |
invokeAll, invokeAll, submit |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
ch
protected JChannel ch
_execProt
protected Executing _execProt
_unfinishedLock
protected java.util.concurrent.locks.Lock _unfinishedLock
_unfinishedCondition
protected java.util.concurrent.locks.Condition _unfinishedCondition
_unfinishedFutures
protected java.util.Set<java.util.concurrent.Future<?>> _unfinishedFutures
_shutdown
protected java.util.concurrent.atomic.AtomicBoolean _shutdown
ExecutionService
public ExecutionService()
ExecutionService
public ExecutionService(JChannel ch)
setChannel
public void setChannel(JChannel ch)
submit
public <T> NotifyingFuture<T> submit(java.lang.Runnable task,
T result)
- Specified by:
submit
in interface java.util.concurrent.ExecutorService
- Overrides:
submit
in class java.util.concurrent.AbstractExecutorService
submit
public <T> NotifyingFuture<T> submit(java.util.concurrent.Callable<T> task)
- Specified by:
submit
in interface java.util.concurrent.ExecutorService
- Overrides:
submit
in class java.util.concurrent.AbstractExecutorService
shutdown
public void shutdown()
shutdownNow
public java.util.List<java.lang.Runnable> shutdownNow()
isShutdown
public boolean isShutdown()
isTerminated
public boolean isTerminated()
awaitTermination
public boolean awaitTermination(long timeout,
java.util.concurrent.TimeUnit unit)
throws java.lang.InterruptedException
- Throws:
java.lang.InterruptedException
invokeAny
public <T> T invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks)
throws java.lang.InterruptedException,
java.util.concurrent.ExecutionException
- Specified by:
invokeAny
in interface java.util.concurrent.ExecutorService
- Overrides:
invokeAny
in class java.util.concurrent.AbstractExecutorService
- Throws:
java.lang.InterruptedException
java.util.concurrent.ExecutionException
invokeAny
public <T> T invokeAny(java.util.Collection<? extends java.util.concurrent.Callable<T>> tasks,
long timeout,
java.util.concurrent.TimeUnit unit)
throws java.lang.InterruptedException,
java.util.concurrent.ExecutionException,
java.util.concurrent.TimeoutException
- Specified by:
invokeAny
in interface java.util.concurrent.ExecutorService
- Overrides:
invokeAny
in class java.util.concurrent.AbstractExecutorService
- Throws:
java.lang.InterruptedException
java.util.concurrent.ExecutionException
java.util.concurrent.TimeoutException
execute
public void execute(java.lang.Runnable command)
newTaskFor
protected <T> java.util.concurrent.RunnableFuture<T> newTaskFor(java.lang.Runnable runnable,
T value)
- Overrides:
newTaskFor
in class java.util.concurrent.AbstractExecutorService
newTaskFor
protected <T> java.util.concurrent.RunnableFuture<T> newTaskFor(java.util.concurrent.Callable<T> callable)
- Overrides:
newTaskFor
in class java.util.concurrent.AbstractExecutorService
Copyright © 1998-2012 Bela Ban / Red Hat. All Rights Reserved.