Класс AbstractExecutorService
- Все реализуемые интерфейсы:
AutoCloseable, Executor, ExecutorService
- Прямые известные подклассы:
ForkJoinPool, ThreadPoolExecutor
public abstract class AbstractExecutorService extends Object implements ExecutorService
ExecutorService, кроме Executor.execute(Runnable). Этот класс реализует методы
submit, invokeAny и invokeAll, используя RunnableFuture, возвращаемый методом newTaskFor, который по умолчанию возвращает экземпляр класса FutureTask, предоставляемого этим пакетом. Например, реализация submit(Runnable) создает связанный RunnableFuture, который выполняется и возвращается. Подклассы могут переопределять методы newTaskFor, чтобы возвращать реализации RunnableFuture, отличные от
FutureTask. Пример расширения. Ниже приведен пример класса, который настраивает ThreadPoolExecutor, используя класс CustomTask вместо стандартного 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.
}
- С версии:
- 1.5
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
AbstractExecutorService() |
Конструктор для вызова из подклассов. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
<T> List |
invokeAll |
Выполняет заданные задачи и возвращает список объектов Future, содержащих их состояния и результаты после завершения всех задач. |
<T> List |
invokeAll |
Выполняет заданные задачи и возвращает список объектов Future, содержащих их состояния и результаты после завершения всех задач или истечения времени ожидания — в зависимости от того, что наступит раньше. |
<T> T |
invokeAny |
Выполняет заданные задачи и возвращает результат одной из них, если такая задача завершилась успешно (то есть не выбросила исключение). |
<T> T |
invokeAny |
Выполняет заданные задачи и возвращает результат одной из них, если такая задача завершилась успешно (то есть не выбросила исключение) до истечения заданного времени ожидания. |
protected <T> RunnableFuture |
newTaskFor |
Возвращает RunnableFuture для заданного объекта Runnable и значения по умолчанию. |
protected <T> RunnableFuture |
newTaskFor |
Возвращает RunnableFuture для заданной задачи Callable. |
Future |
submit |
Отправляет задачу Runnable на выполнение и возвращает объект Future, представляющий эту задачу. |
<T> Future |
submit |
Отправляет задачу Runnable на выполнение и возвращает объект Future, представляющий эту задачу. |
<T> Future |
submit |
Отправляет на выполнение задачу, возвращающую значение, и возвращает объект Future, представляющий ожидаемый результат задачи. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Указывает, является ли другой объект «равным» этому объекту. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удален в будущей версии. Финализация устарела и будет удалена в одном из следующих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Переводит текущий поток в состояние ожидания до пробуждения, обычно вследствие вызова notify или прерывания. |
final void |
wait |
Переводит текущий поток в состояние ожидания до пробуждения, обычно вследствие вызова notify или прерывания, либо до истечения заданного интервала реального времени. |
final void |
wait |
Переводит текущий поток в состояние ожидания до пробуждения, обычно вследствие вызова notify или прерывания, либо до истечения заданного интервала реального времени. |
Методы, объявленные в интерфейсе Executor
execute | Модификатор и тип | Метод | Описание |
|---|---|---|
void |
execute |
Выполняет заданную команду в некоторый момент в будущем. |
Методы, объявленные в интерфейсе ExecutorService
awaitTermination, close, isShutdown, isTerminated, shutdown, shutdownNow | Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
awaitTermination |
Блокирует выполнение до завершения всех задач после запроса на завершение работы, истечения времени ожидания или прерывания текущего потока — в зависимости от того, что наступит раньше. |
default void |
close() |
Инициирует упорядоченное завершение работы: ранее отправленные задачи выполняются, но новые задачи не принимаются. |
boolean |
isShutdown() |
Возвращает true, если работа этого исполнителя была завершена. |
boolean |
isTerminated() |
Возвращает true, если после завершения работы все задачи выполнены. |
void |
shutdown() |
Инициирует упорядоченное завершение работы: ранее отправленные задачи выполняются, но новые задачи не принимаются. |
List |
shutdownNow() |
Пытается остановить все активно выполняющиеся задачи, прекращает обработку ожидающих задач и возвращает список задач, ожидавших выполнения. |
Подробное описание конструкторов
AbstractExecutorService
public AbstractExecutorService()
Подробное описание методов
newTaskFor
protected <T> RunnableFuture<T> newTaskFor(Runnable runnable, T value)
RunnableFuture для заданного объекта Runnable и значения по умолчанию.- Параметры типа:
T— тип заданного значения- Параметры:
-
runnable— задача Runnable, для которой создается оболочка -
value— значение по умолчанию для возвращаемого объекта future - Возвращает:
RunnableFuture, который при запуске выполнит базовую задачу Runnable и который, будучиFuture, вернет заданное значение в качестве результата и обеспечит возможность отмены базовой задачи- С версии:
- 1.6
newTaskFor
protected <T> RunnableFuture<T> newTaskFor(Callable<T> callable)
RunnableFuture для заданной задачи Callable.- Параметры типа:
T— тип результата Callable- Параметры:
-
callable— задача Callable, для которой создается оболочка - Возвращает:
RunnableFuture, который при запуске вызовет базовый объект Callable и который, будучиFuture, вернет результат Callable и обеспечит возможность отмены базовой задачи- С версии:
- 1.6
submit
public Future<?> submit(Runnable task)
ExecutorServiceget объекта Future вернет null при успешном завершении.- Определен в:
-
submitв интерфейсеExecutorService - Параметры:
-
task— задача для отправки - Возвращает:
- объект Future, представляющий ожидающее завершение задачи
- Выбрасывает:
-
RejectedExecutionException— если задачу невозможно запланировать для выполнения -
NullPointerException— если задача равна null
submit
public <T> Future<T> submit(Runnable task, T result)
ExecutorServiceget объекта Future вернет заданный результат при успешном завершении.- Определен в:
-
submitв интерфейсеExecutorService - Параметры типа:
T— тип результата- Параметры:
-
task— задача для отправки -
result— возвращаемый результат - Возвращает:
- объект Future, представляющий ожидающее завершение задачи
- Выбрасывает:
-
RejectedExecutionException— если задачу невозможно запланировать для выполнения -
NullPointerException— если задача равна null
submit
public <T> Future<T> submit(Callable<T> task)
ExecutorServiceget объекта Future вернет результат задачи при успешном завершении. Если требуется немедленно заблокировать выполнение в ожидании задачи, можно использовать конструкции вида result = exec.submit(aCallable).get();
Примечание: класс Executors содержит набор методов, преобразующих некоторые распространенные объекты, подобные замыканиям, например PrivilegedAction, в форму Callable, чтобы их можно было отправить на выполнение.
- Определен в:
-
submitв интерфейсеExecutorService - Параметры типа:
T— тип результата задачи- Параметры:
-
task— задача для отправки - Возвращает:
- объект Future, представляющий ожидающее завершение задачи
- Выбрасывает:
-
RejectedExecutionException— если задачу невозможно запланировать для выполнения -
NullPointerException— если задача равна null
invokeAny
public <T> T invokeAny(Collection<? extends Callable<T>> tasks) throws InterruptedException, ExecutionException
ExecutorService- Определен в:
-
invokeAnyв интерфейсеExecutorService - Параметры типа:
T— тип значений, возвращаемых задачами- Параметры:
-
tasks— коллекция задач - Возвращает:
- результат, возвращенный одной из задач
- Выбрасывает:
-
InterruptedException— если ожидание было прервано -
NullPointerException— если tasks или любая задача, подлежащая выполнению, равнаnull -
IllegalArgumentException— если tasks пуста -
ExecutionException— если ни одна задача не завершилась успешно -
RejectedExecutionException— если задачи невозможно запланировать для выполнения
invokeAny
public <T> T invokeAny(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException
ExecutorService- Определен в:
-
invokeAnyв интерфейсеExecutorService - Параметры типа:
T— тип значений, возвращаемых задачами- Параметры:
-
tasks— коллекция задач -
timeout— максимальное время ожидания -
unit— единица измерения аргумента времени ожидания - Возвращает:
- результат, возвращенный одной из задач
- Выбрасывает:
-
InterruptedException— если ожидание было прервано -
NullPointerException— если tasks, unit или любая задача, подлежащая выполнению, равнаnull -
TimeoutException— если заданное время ожидания истекло до успешного завершения какой-либо задачи -
ExecutionException— если ни одна задача не завершилась успешно -
RejectedExecutionException— если задачи невозможно запланировать для выполнения
invokeAll
public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks) throws InterruptedException
ExecutorServiceFuture.isDone() возвращает true для каждого элемента возвращаемого списка. Обратите внимание, что завершенная задача могла завершиться как обычным образом, так и с выбросом исключения. Результаты этого метода не определены, если заданная коллекция изменяется во время выполнения операции.- Определен в:
-
invokeAllв интерфейсеExecutorService - Параметры типа:
T— тип значений, возвращаемых задачами- Параметры:
-
tasks— коллекция задач - Возвращает:
- список объектов Future, представляющих задачи, в том же последовательном порядке, что и элементы итератора заданного списка задач; все задачи в списке завершены
- Выбрасывает:
-
InterruptedException— если ожидание было прервано; в этом случае незавершенные задачи отменяются -
NullPointerException— если tasks или любой из ее элементов равенnull -
RejectedExecutionException— если какую-либо задачу невозможно запланировать для выполнения
invokeAll
public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) throws InterruptedException
ExecutorServiceFuture.isDone() возвращает true для каждого элемента возвращаемого списка. По завершении метода незавершенные задачи отменяются. Обратите внимание, что завершенная задача могла завершиться как обычным образом, так и с выбросом исключения. Результаты этого метода не определены, если заданная коллекция изменяется во время выполнения операции.- Определен в:
-
invokeAllв интерфейсеExecutorService - Параметры типа:
T— тип значений, возвращаемых задачами- Параметры:
-
tasks— коллекция задач -
timeout— максимальное время ожидания -
unit— единица измерения аргумента времени ожидания - Возвращает:
- список объектов Future, представляющих задачи, в том же последовательном порядке, что и элементы итератора заданного списка задач. Если время ожидания не истекло, каждая задача будет завершена. Если время ожидания истекло, некоторые задачи могут остаться незавершенными.
- Выбрасывает:
-
InterruptedException— если ожидание было прервано; в этом случае незавершенные задачи отменяются -
NullPointerException— если tasks, любой из ее элементов или unit равенnull -
RejectedExecutionException— если какую-либо задачу невозможно запланировать для выполнения
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.