public class DefaultExecutorService extends AbstractExecutorService implements DistributedExecutorService
ExecutorService
and DistributedExecutorService
.
This ExecutorService provides methods to submit tasks for an execution on a cluster of Infinispan
nodes.
Note that due to potential task migration to another nodes every Callable
,
Runnable
and/or DistributedCallable
submitted must be either Serializable
or Externalizable
. Also the value returned from a callable must be Serializable
or Externalizable
. Unfortunately if the value returned is not serializable then a
NotSerializableException
will be thrown.
Modifier and Type | Class and Description |
---|---|
protected static class |
DefaultExecutorService.DistributedRunnableFuture<V>
DistributedRunnableFuture is essentially a Future wrap around DistributedExecuteCommand.
|
Modifier and Type | Field and Description |
---|---|
protected AdvancedCache |
cache |
protected CommandsFactory |
factory |
protected InterceptorChain |
invoker |
protected AtomicBoolean |
isShutdown |
protected ExecutorService |
localExecutorService |
protected Marshaller |
marshaller |
protected RpcManager |
rpc |
Constructor and Description |
---|
DefaultExecutorService(Cache masterCacheNode)
Creates a new DefaultExecutorService given a master cache node for local task execution.
|
DefaultExecutorService(Cache<?,?> masterCacheNode,
ExecutorService localExecutorService)
Creates a new DefaultExecutorService given a master cache node and an ExecutorService for
parallel execution of task ran on this node.
|
Modifier and Type | Method and Description |
---|---|
boolean |
awaitTermination(long timeout,
TimeUnit unit) |
protected <T> Callable<T> |
clone(Callable<T> task) |
void |
execute(Runnable command) |
protected <T> void |
executeFuture(Address address,
DefaultExecutorService.DistributedRunnableFuture<T> f) |
<T> T |
invokeAny(Collection<? extends Callable<T>> tasks) |
<T> T |
invokeAny(Collection<? extends Callable<T>> tasks,
long timeout,
TimeUnit unit) |
protected <T> void |
invokeLocally(DefaultExecutorService.DistributedRunnableFuture<T> future) |
boolean |
isShutdown() |
boolean |
isTerminated() |
protected <K> Map<Address,List<K>> |
mapKeysToNodes(K... input) |
protected <T> RunnableFuture<T> |
newTaskFor(Callable<T> callable) |
protected <T> RunnableFuture<T> |
newTaskFor(Runnable runnable,
T value) |
protected List<Address> |
randomClusterMembers(List<Address> members,
int numNeeded) |
protected Address |
selectExecutionNode() |
protected Address |
selectExecutionNode(List<Address> candidates) |
void |
shutdown() |
List<Runnable> |
shutdownNow() |
<T> NotifyingFuture<T> |
submit(Callable<T> task) |
<T,K> Future<T> |
submit(Callable<T> task,
K... input)
Submits given Callable task for an execution on a single Infinispan node.
|
<T> NotifyingFuture<T> |
submit(Runnable task,
T result) |
<T> List<Future<T>> |
submitEverywhere(Callable<T> task)
Submits the given Callable task for an execution on all available Infinispan nodes.
|
<T,K> List<Future<T>> |
submitEverywhere(Callable<T> task,
K... input)
Submits the given Callable task for an execution on all available Infinispan nodes using input
keys specified by K input.
|
invokeAll, invokeAll, submit
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
invokeAll, invokeAll, submit
protected final AtomicBoolean isShutdown
protected final AdvancedCache cache
protected final RpcManager rpc
protected final InterceptorChain invoker
protected final CommandsFactory factory
protected final Marshaller marshaller
protected final ExecutorService localExecutorService
public DefaultExecutorService(Cache masterCacheNode)
masterCacheNode
- Cache node initiating distributed taskpublic DefaultExecutorService(Cache<?,?> masterCacheNode, ExecutorService localExecutorService)
masterCacheNode
- Cache node initiating distributed tasklocalExecutorService
- ExecutorService to run local taskspublic <T> NotifyingFuture<T> submit(Runnable task, T result)
submit
in interface ExecutorService
submit
in class AbstractExecutorService
public <T> NotifyingFuture<T> submit(Callable<T> task)
submit
in interface ExecutorService
submit
in class AbstractExecutorService
public void shutdown()
shutdown
in interface ExecutorService
public List<Runnable> shutdownNow()
shutdownNow
in interface ExecutorService
public boolean isShutdown()
isShutdown
in interface ExecutorService
public boolean isTerminated()
isTerminated
in interface ExecutorService
public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException
awaitTermination
in interface ExecutorService
InterruptedException
public <T> T invokeAny(Collection<? extends Callable<T>> tasks) throws InterruptedException, ExecutionException
invokeAny
in interface ExecutorService
invokeAny
in class AbstractExecutorService
InterruptedException
ExecutionException
public <T> T invokeAny(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException
invokeAny
in interface ExecutorService
invokeAny
in class AbstractExecutorService
InterruptedException
ExecutionException
TimeoutException
protected <T> RunnableFuture<T> newTaskFor(Runnable runnable, T value)
newTaskFor
in class AbstractExecutorService
protected <T> RunnableFuture<T> newTaskFor(Callable<T> callable)
newTaskFor
in class AbstractExecutorService
public <T,K> Future<T> submit(Callable<T> task, K... input)
DistributedExecutorService
Execution environment will chose an arbitrary node N hosting some or all of the keys specified as input. If all keys are not available locally at node N they will be retrieved from the cluster.
submit
in interface DistributedExecutorService
task
- a task to execute across Infinispan clusterinput
- input keys for this task, effective if and only if task is instance of DistributedCallable
public <T> List<Future<T>> submitEverywhere(Callable<T> task)
DistributedExecutorService
submitEverywhere
in interface DistributedExecutorService
task
- a task to execute across Infinispan clusterpublic <T,K> List<Future<T>> submitEverywhere(Callable<T> task, K... input)
DistributedExecutorService
Execution environment will chose all nodes in Infinispan cluster where input keys are local, migrate given Callable instance to those nodes, execute it and return result as a list of Futures
submitEverywhere
in interface DistributedExecutorService
task
- a task to execute across Infinispan clusterinput
- input keys for this task, effective if and only if task is instance of DistributedCallable
protected <T> void executeFuture(Address address, DefaultExecutorService.DistributedRunnableFuture<T> f)
protected <T> void invokeLocally(DefaultExecutorService.DistributedRunnableFuture<T> future)
protected Address selectExecutionNode()
Copyright © 2012 JBoss by Red Hat. All Rights Reserved.