APIdia Launch Partner
Top Description Constructors Methods
java.util.concurrent

public abstract Class AbstractExecutorService

extends Object
implements ExecutorService
Class Inheritance
All Implemented Interfaces
java.util.concurrent.ExecutorService, java.lang.AutoCloseable, java.util.concurrent.Executor
Known Direct Subclasses
java.util.concurrent.ForkJoinPool, java.util.concurrent.ThreadPoolExecutor
Static Imports
java.util.concurrent.TimeUnit.NANOSECONDS

Provides default implementations of ExecutorService methods other than Executor#execute. 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.
}
Author
Doug Lea
Since
1.5

Constructor Summary

AccessConstructor and Description
public
AbstractExecutorService()

Constructor for subclasses to call.

Method Summary

Modifier and TypeMethod and Description
private static <T> void
cancelAll(ArrayList<Future<T>> futures)

private static <T> void
cancelAll(ArrayList<Future<T>> futures, int j)

Cancels all futures with index at least j.

private <T> T
doInvokeAny(Collection<? extends Callable<T>> tasks, boolean timed, long nanos)

the main mechanics of invokeAny.

public <T> List<Future<T>>
invokeAll(Collection<? extends Callable<T>> tasks)

Implements java.util.concurrent.ExecutorService.invokeAll.

Executes the given tasks, returning a list of Futures holding their status and results when all complete.

public <T> List<Future<T>>
invokeAll(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)

Implements java.util.concurrent.ExecutorService.invokeAll.

Executes the given tasks, returning a list of Futures holding their status and results when all complete or the timeout expires, whichever happens first.

public <T> T
invokeAny(Collection<? extends Callable<T>> tasks)

Implements java.util.concurrent.ExecutorService.invokeAny.

Executes the given tasks, returning the result of one that has completed successfully (i.e., without throwing an exception), if any do.

public <T> T
invokeAny(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)

Implements java.util.concurrent.ExecutorService.invokeAny.

Executes the given tasks, returning the result of one that has completed successfully (i.e., without throwing an exception), if any do before the given timeout elapses.

protected <
the type of the given value
T
>
RunnableFuture<T>

Returns:

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
(Runnable
the runnable task being wrapped
runnable
,
T
the default value for the returned future
value
)

Returns a RunnableFuture for the given runnable and default value.

protected <
the type of the callable's result
T
>
RunnableFuture<T>

Returns:

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
newTaskFor
(Callable<T>
the callable task being wrapped
callable
)

Returns a RunnableFuture for the given callable task.

public Future<?>
submit(Runnable task)

Implements java.util.concurrent.ExecutorService.submit.

Submits a Runnable task for execution and returns a Future representing that task.

public <T> Future<T>
submit(Runnable task, T result)

Implements java.util.concurrent.ExecutorService.submit.

Submits a Runnable task for execution and returns a Future representing that task.

public <T> Future<T>
submit(Callable<T> task)

Implements java.util.concurrent.ExecutorService.submit.

Submits a value-returning task for execution and returns a Future representing the pending results of the task.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Constructor Detail

AbstractExecutorServiceback to summary
public AbstractExecutorService()

Constructor for subclasses to call.

Method Detail

cancelAllback to summary
private static <T> void cancelAll(ArrayList<Future<T>> futures)
cancelAllback to summary
private static <T> void cancelAll(ArrayList<Future<T>> futures, int j)

Cancels all futures with index at least j.

doInvokeAnyback to summary
private <T> T doInvokeAny(Collection<? extends Callable<T>> tasks, boolean timed, long nanos) throws InterruptedException, ExecutionException, TimeoutException

the main mechanics of invokeAny.

invokeAllback to summary
public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks) throws InterruptedException

Implements java.util.concurrent.ExecutorService.invokeAll.

Doc from java.util.concurrent.ExecutorService.invokeAll.

Executes the given tasks, returning a list of Futures holding their status and results when all complete. Future#isDone is true for each element of the returned list. Note that a completed task could have terminated either normally or by throwing an exception. The results of this method are undefined if the given collection is modified while this operation is in progress.

Annotations
@Override
Exceptions
InterruptedException:
if interrupted while waiting, in which case unfinished tasks are cancelled
NullPointerException:
if tasks or any of its elements are null
RejectedExecutionException:
if any task cannot be scheduled for execution
invokeAllback to summary
public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) throws InterruptedException

Implements java.util.concurrent.ExecutorService.invokeAll.

Doc from java.util.concurrent.ExecutorService.invokeAll.

Executes the given tasks, returning a list of Futures holding their status and results when all complete or the timeout expires, whichever happens first. Future#isDone is true for each element of the returned list. Upon return, tasks that have not completed are cancelled. Note that a completed task could have terminated either normally or by throwing an exception. The results of this method are undefined if the given collection is modified while this operation is in progress.

Annotations
@Override
Exceptions
InterruptedException:
if interrupted while waiting, in which case unfinished tasks are cancelled
NullPointerException:
if tasks, any of its elements, or unit are null
RejectedExecutionException:
if any task cannot be scheduled for execution
invokeAnyback to summary
public <T> T invokeAny(Collection<? extends Callable<T>> tasks) throws InterruptedException, ExecutionException

Implements java.util.concurrent.ExecutorService.invokeAny.

Doc from java.util.concurrent.ExecutorService.invokeAny.

Executes the given tasks, returning the result of one that has completed successfully (i.e., without throwing an exception), if any do. Upon normal or exceptional return, tasks that have not completed are cancelled. The results of this method are undefined if the given collection is modified while this operation is in progress.

Annotations
@Override
Exceptions
InterruptedException:
if interrupted while waiting
ExecutionException:
if no task successfully completes
NullPointerException:
if tasks or any element task subject to execution is null
IllegalArgumentException:
if tasks is empty
RejectedExecutionException:
if tasks cannot be scheduled for execution
invokeAnyback to summary
public <T> T invokeAny(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException

Implements java.util.concurrent.ExecutorService.invokeAny.

Doc from java.util.concurrent.ExecutorService.invokeAny.

Executes the given tasks, returning the result of one that has completed successfully (i.e., without throwing an exception), if any do before the given timeout elapses. Upon normal or exceptional return, tasks that have not completed are cancelled. The results of this method are undefined if the given collection is modified while this operation is in progress.

Annotations
@Override
Exceptions
InterruptedException:
if interrupted while waiting
ExecutionException:
if no task successfully completes
TimeoutException:
if the given timeout elapses before any task successfully completes
NullPointerException:
if tasks, or unit, or any element task subject to execution is null
RejectedExecutionException:
if tasks cannot be scheduled for execution
newTaskForback to summary
protected <T> RunnableFuture<T> newTaskFor(Runnable runnable, T value)

Returns a RunnableFuture for the given runnable and default value.

Parameters
<T>
the type of the given value
runnable:Runnable

the runnable task being wrapped

value:T

the default value for the returned future

Returns:RunnableFuture<T>

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

Since
1.6
newTaskForback to summary
protected <T> RunnableFuture<T> newTaskFor(Callable<T> callable)

Returns a RunnableFuture for the given callable task.

Parameters
<T>
the type of the callable's result
callable:Callable<T>

the callable task being wrapped

Returns:RunnableFuture<T>

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

Since
1.6
submitback to summary
public Future<?> submit(Runnable task)

Implements java.util.concurrent.ExecutorService.submit.

Doc from java.util.concurrent.ExecutorService.submit.

Submits a Runnable task for execution and returns a Future representing that task. The Future's get method will return null upon successful completion.

Annotations
@Override
Exceptions
RejectedExecutionException:
if the task cannot be scheduled for execution
NullPointerException:
if the task is null
submitback to summary
public <T> Future<T> submit(Runnable task, T result)

Implements java.util.concurrent.ExecutorService.submit.

Doc from java.util.concurrent.ExecutorService.submit.

Submits a Runnable task for execution and returns a Future representing that task. The Future's get method will return the given result upon successful completion.

Annotations
@Override
Exceptions
RejectedExecutionException:
if the task cannot be scheduled for execution
NullPointerException:
if the task is null
submitback to summary
public <T> Future<T> submit(Callable<T> task)

Implements java.util.concurrent.ExecutorService.submit.

Doc from java.util.concurrent.ExecutorService.submit.

Submits a value-returning task for execution and returns a Future representing the pending results of the task. The Future's get method will return the task's result upon successful completion.

If you would like to immediately block waiting for a task, you can use constructions of the form result = exec.submit(aCallable).get();

Note

The Executors class includes a set of methods that can convert some other common closure-like objects, for example, java.security.PrivilegedAction to Callable form so they can be submitted.

Annotations
@Override
Exceptions
RejectedExecutionException:
if the task cannot be scheduled for execution
NullPointerException:
if the task is null