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, submitclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitinvokeAll, invokeAll, submitprotected 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 ExecutorServicesubmit in class AbstractExecutorServicepublic <T> NotifyingFuture<T> submit(Callable<T> task)
submit in interface ExecutorServicesubmit in class AbstractExecutorServicepublic void shutdown()
shutdown in interface ExecutorServicepublic List<Runnable> shutdownNow()
shutdownNow in interface ExecutorServicepublic boolean isShutdown()
isShutdown in interface ExecutorServicepublic boolean isTerminated()
isTerminated in interface ExecutorServicepublic boolean awaitTermination(long timeout,
TimeUnit unit)
throws InterruptedException
awaitTermination in interface ExecutorServiceInterruptedExceptionpublic <T> T invokeAny(Collection<? extends Callable<T>> tasks) throws InterruptedException, ExecutionException
invokeAny in interface ExecutorServiceinvokeAny in class AbstractExecutorServiceInterruptedExceptionExecutionExceptionpublic <T> T invokeAny(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException
invokeAny in interface ExecutorServiceinvokeAny in class AbstractExecutorServiceInterruptedExceptionExecutionExceptionTimeoutExceptionprotected <T> RunnableFuture<T> newTaskFor(Runnable runnable, T value)
newTaskFor in class AbstractExecutorServiceprotected <T> RunnableFuture<T> newTaskFor(Callable<T> callable)
newTaskFor in class AbstractExecutorServicepublic <T,K> Future<T> submit(Callable<T> task, K... input)
DistributedExecutorServiceExecution 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 DistributedExecutorServicetask - a task to execute across Infinispan clusterinput - input keys for this task, effective if and only if task is instance of DistributedCallablepublic <T> List<Future<T>> submitEverywhere(Callable<T> task)
DistributedExecutorServicesubmitEverywhere in interface DistributedExecutorServicetask - a task to execute across Infinispan clusterpublic <T,K> List<Future<T>> submitEverywhere(Callable<T> task, K... input)
DistributedExecutorServiceExecution 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 DistributedExecutorServicetask - a task to execute across Infinispan clusterinput - input keys for this task, effective if and only if task is instance of DistributedCallableprotected <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.