Класс AbstractExecutorService
- Все реализованные интерфейсы:
-
Executor,ExecutorService
- Непосредственные подклассы:
-
ForkJoinPool,ThreadPoolExecutor
public abstract class AbstractExecutorService extends Object implements ExecutorService
ExecutorService. Этот класс реализует методы 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.
}
- C момента:
- 1.5
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
AbstractExecutorService() |
Конструктор для вызова подклассами. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
<T> List<Future<T>> |
invokeAll |
Выполняет заданные задачи, возвращая список Futures, содержащих их состояние и результаты по завершении всех задач. |
<T> List<Future<T>> |
invokeAll |
Выполняет заданные задачи, возвращая список Futures, содержащих их состояние и результаты, когда все задачи завершены или истечёт таймаут, что произойдёт первым. |
<T> T |
invokeAny |
Выполняет заданные задачи, возвращая результат одной задачи, которая завершилась успешно (т.е. без выбрасывания исключения), если таковые есть. |
<T> T |
invokeAny |
Выполняет заданные задачи, возвращая результат одной задачи, которая завершилась успешно (т.е. без выбрасывания исключения), если таковые есть до истечения указанного таймаута. |
protected <T> RunnableFuture<T> |
newTaskFor |
Возвращает RunnableFuture для данного runnable и значения по умолчанию. |
protected <T> RunnableFuture<T> |
newTaskFor |
Возвращает RunnableFuture для заданной callable задачи. |
Future<?> |
submit |
Отправляет задачу Runnable на выполнение и возвращает Future, представляющий эту задачу. |
<T> Future<T> |
submit |
Отправляет задачу Runnable на выполнение и возвращает Future, представляющий эту задачу. |
<T> Future<T> |
submit |
Отправляет задачу, возвращающую значение, на выполнение и возвращает Future, представляющий ожидаемые результаты задачи. |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Методы, объявленные в интерфейсе java.util.concurrent.ExecutorService
awaitTermination, isShutdown, isTerminated, shutdown, shutdownNow
Подробное описание конструкторов
AbstractExecutorService
public AbstractExecutorService()
Подробное описание методов
newTaskFor
protected <T> RunnableFuture<T> newTaskFor(Runnable runnable, T value)
RunnableFuture для заданного runnable и значения по умолчанию.- Параметры типа:
-
T- тип заданного значения - Параметры:
-
runnable- задача runnable, которая оборачивается -
value- значение по умолчанию для возвращаемого будущего - Возвращаемое значение:
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 вернёт null при успешном завершении.- Определено в:
-
submitв интерфейсеExecutorService - Параметры:
-
task- задача для отправки - Возвращаемое значение:
- Future, представляющее ожидающее завершение задачи
- Исключение:
-
RejectedExecutionException- если задача не может быть запланирована для выполнения -
NullPointerException- если задача равна null
submit
public <T> Future<T> submit(Runnable task, T result)
ExecutorServiceget вернёт заданное значение при успешном завершении.- Определено в:
-
submitв интерфейсеExecutorService - Параметры типа:
-
T- тип результата - Параметры:
-
task- задача для отправки -
result- результат, который нужно вернуть - Возвращаемое значение:
- Future, представляющее ожидающее завершение задачи
- Исключение:
-
RejectedExecutionException- если задача не может быть запланирована для выполнения -
NullPointerException- если задача равна null
submit
public <T> Future<T> submit(Callable<T> task)
ExecutorServiceget вернёт результат задачи при успешном завершении. Если вы хотите немедленно заблокировать ожидание задачи, вы можете использовать конструкции типа 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- если прервано ожидание -
ExecutionException- если ни одна задача не завершается успешно
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- если прервано ожидание -
ExecutionException- если ни одна задача не завершается успешно -
TimeoutException- если заданный таймаут истекает до того, как любая задача успешно завершается
invokeAll
public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks) throws InterruptedException
ExecutorServiceFuture.isDone() равно true для каждого элемента возвращаемого списка. Обратите внимание, что завершенная задача могла завершиться либо нормально, либо сбросив исключение. Результаты этого метода не определены, если заданный список изменён во время выполнения этой операции.- Определено в:
-
invokeAllв интерфейсеExecutorService - Параметры типа:
-
T- тип значений, возвращаемых задачами - Параметры:
-
tasks- список задач - Возвращаемое значение:
- список Future, представляющих задачи в том же порядке, что и итератор для заданного списка задач, каждая из которых завершилась
- Исключение:
-
InterruptedException- если прервано ожидание, в этом случае незавершенные задачи отменяются
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- если прервано ожидание, в этом случае незавершенные задачи отменяются
© 1993, 2021, 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.
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/AbstractExecutorService.html