edu.emory.mathcs.backport.java.util.concurrent
Class AbstractExecutorService
java.lang.Object
edu.emory.mathcs.backport.java.util.concurrent.AbstractExecutorService
- Executor, ExecutorService
public abstract class AbstractExecutorService
extends java.lang.Object
Provides default implementations of
ExecutorService
execution methods. This class implements the
submit,
invokeAny and
invokeAll methods using a
RunnableFuture
returned by
newTaskFor, which defaults
to the
FutureTask
class provided in this package. For example,
the implementation of
submit(Runnable) creates an
associated
RunnableFuture that is executed and
returned. Subclasses may override the
newTaskFor methods
to return
RunnableFuture implementations other than
FutureTask.
Extension example. Here is a sketch of a class
that customizes
ThreadPoolExecutor
to use
a
CustomTask class instead of the default
FutureTask:
public class CustomThreadPoolExecutor extends ThreadPoolExecutor {
static class CustomTask<V> implements RunnableFuture<V> {...}
protected <V> RunnableFuture<V> newTaskFor(Callable<V> c) {
return new CustomTask<V>(c);
}
protected <V> RunnableFuture<V> newTaskFor(Runnable r, V v) {
return new CustomTask<V>(r, v);
}
// ... add constructors, etc.
}
newTaskFor
protected RunnableFuture newTaskFor(Runnable runnable,
Object value)
Returns a RunnableFuture for the given runnable and default
value.
runnable
- the runnable task being wrappedvalue
- the default value for the returned future
- a RunnableFuture which when run will run the
underlying runnable and which, as a Future, will yield
the given value as its result and provide for cancellation of
the underlying task.
newTaskFor
protected RunnableFuture newTaskFor(Callable callable)
Returns a RunnableFuture for the given callable task.
callable
- the callable task being wrapped
- a RunnableFuture which when run will call the
underlying callable and which, as a Future, will yield
the callable's result as its result and provide for
cancellation of the underlying task.