Spec-Zone.ru › OpenJDK 27

Класс ScheduledThreadPoolExecutor

java.lang.Object
java.util.concurrent.AbstractExecutorService
java.util.concurrent.ThreadPoolExecutor
java.util.concurrent.ScheduledThreadPoolExecutor
Все реализуемые интерфейсы:
AutoCloseable, Executor, ExecutorService, ScheduledExecutorService
public class ScheduledThreadPoolExecutor extends ThreadPoolExecutor implements ScheduledExecutorService
ThreadPoolExecutor, который также может планировать выполнение команд после заданной задержки или периодически. Этот класс предпочтительнее Timer, если требуется несколько рабочих потоков либо дополнительная гибкость или возможности ThreadPoolExecutor (от которого наследуется этот класс).

Отложенные задачи выполняются не раньше, чем становятся доступными для выполнения, однако никаких гарантий реального времени относительно того, когда именно они начнут выполняться после этого, нет. Задачи, запланированные на одно и то же время выполнения, становятся доступными в порядке поступления — первым поступил, первым выполнен (FIFO).

Если отправленная задача отменена до запуска, ее выполнение подавляется. По умолчанию такая отмененная задача не удаляется автоматически из очереди работ, пока не истечет задержка. Это позволяет проводить дополнительную проверку и мониторинг, но также может привести к неограниченному накоплению отмененных задач. Чтобы избежать этого, используйте setRemoveOnCancelPolicy(boolean), чтобы задачи сразу удалялись из очереди работ при отмене.

Последовательные выполнения периодической задачи, запланированной с помощью scheduleAtFixedRate или scheduleWithFixedDelay, не перекрываются. Хотя разные выполнения могут осуществляться разными потоками, эффекты предыдущих выполнений предшествуют по отношению happens-before эффектам последующих.

Хотя этот класс наследуется от ThreadPoolExecutor, некоторые унаследованные методы настройки для него бесполезны. В частности, поскольку он работает как пул фиксированного размера, используя corePoolSize потоков и неограниченную очередь, изменение maximumPoolSize не дает полезного эффекта. Кроме того, почти никогда не следует устанавливать corePoolSize в ноль или использовать allowCoreThreadTimeOut, поскольку это может оставить пул без потоков для обработки задач, когда они станут доступными для выполнения.

Как и ThreadPoolExecutor, если не указано иное, этот класс использует Executors.defaultThreadFactory() в качестве фабрики потоков по умолчанию и ThreadPoolExecutor.AbortPolicy в качестве обработчика отклоненных задач по умолчанию.

Примечания по расширению: Этот класс переопределяет методы execute и submit, чтобы создавать внутренние объекты ScheduledFuture для управления задержками и планированием отдельных задач. Чтобы сохранить функциональность, любые дальнейшие переопределения этих методов в подклассах должны вызывать версии суперкласса, что фактически отключает дополнительную настройку задач. Однако этот класс предоставляет альтернативный защищенный метод расширения decorateTask (по одной версии для Runnable и Callable), который можно использовать для настройки конкретных типов задач, используемых для выполнения команд, добавленных с помощью execute, submit, schedule, scheduleAtFixedRate и scheduleWithFixedDelay. По умолчанию ScheduledThreadPoolExecutor использует тип задачи, наследующий FutureTask. Однако его можно изменить или заменить с помощью подклассов следующего вида:

public class CustomScheduledExecutor extends ScheduledThreadPoolExecutor {

  static class CustomTask<V> implements RunnableScheduledFuture<V> { ... }

  protected <V> RunnableScheduledFuture<V> decorateTask(
               Runnable r, RunnableScheduledFuture<V> task) {
      return new CustomTask<V>(r, task);
  }

  protected <V> RunnableScheduledFuture<V> decorateTask(
               Callable<V> c, RunnableScheduledFuture<V> task) {
      return new CustomTask<V>(c, task);
  }
  // ... add constructors, etc.
}
Начиная с:
1.5

Краткое описание вложенных классов

Вложенные классы/интерфейсы, объявленные в классе ThreadPoolExecutor

ThreadPoolExecutor.AbortPolicy, ThreadPoolExecutor.CallerRunsPolicy, ThreadPoolExecutor.DiscardOldestPolicy, ThreadPoolExecutor.DiscardPolicy
Модификатор и тип Класс Описание
static class  ThreadPoolExecutor.AbortPolicy
Обработчик отклоненных задач, который выбрасывает RejectedExecutionException.
static class  ThreadPoolExecutor.CallerRunsPolicy
Обработчик отклоненных задач, который выполняет отклоненную задачу непосредственно в потоке, вызывающем метод execute, если только исполнитель не завершил работу; в этом случае задача отбрасывается.
static class  ThreadPoolExecutor.DiscardOldestPolicy
Обработчик отклоненных задач, который удаляет самый старый необработанный запрос, а затем повторяет execute, если только исполнитель не завершил работу; в этом случае задача отбрасывается.
static class  ThreadPoolExecutor.DiscardPolicy
Обработчик отклоненных задач, который без уведомления отбрасывает отклоненную задачу.

Краткое описание конструкторов

Конструктор Описание
ScheduledThreadPoolExecutor(int corePoolSize)
Создает новый ScheduledThreadPoolExecutor с заданным размером основного пула.
ScheduledThreadPoolExecutor(int corePoolSize, RejectedExecutionHandler handler)
Создает новый ScheduledThreadPoolExecutor с заданными начальными параметрами.
ScheduledThreadPoolExecutor(int corePoolSize, ThreadFactory threadFactory)
Создает новый ScheduledThreadPoolExecutor с заданными начальными параметрами.
ScheduledThreadPoolExecutor(int corePoolSize, ThreadFactory threadFactory, RejectedExecutionHandler handler)
Создает новый ScheduledThreadPoolExecutor с заданными начальными параметрами.

Краткое описание методов

Модификатор и тип Метод Описание
protected <V> RunnableScheduledFuture<V> decorateTask(Runnable runnable, RunnableScheduledFuture<V> task)
Изменяет или заменяет задачу, используемую для выполнения runnable.
protected <V> RunnableScheduledFuture<V> decorateTask(Callable<V> callable, RunnableScheduledFuture<V> task)
Изменяет или заменяет задачу, используемую для выполнения callable.
void execute(Runnable command)
Выполняет command без обязательной задержки.
boolean getContinueExistingPeriodicTasksAfterShutdownPolicy()
Возвращает политику, определяющую, следует ли продолжать выполнение существующих периодических задач, даже если этот исполнитель был shutdown.
boolean getExecuteExistingDelayedTasksAfterShutdownPolicy()
Возвращает политику, определяющую, следует ли выполнять существующие задачи с задержкой, даже если этот исполнитель был shutdown.
BlockingQueue<Runnable> getQueue()
Возвращает очередь задач, используемую этим исполнителем.
boolean getRemoveOnCancelPolicy()
Возвращает политику, определяющую, следует ли немедленно удалять отмененные задачи из очереди работ при отмене.
ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit)
Отправляет одноразовую задачу, которая становится доступной для выполнения после заданной задержки.
<V> ScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit)
Отправляет одноразовую задачу, возвращающую значение и становящуюся доступной для выполнения после заданной задержки.
ScheduledFuture<?> scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)
Отправляет периодическое действие, которое становится доступным для выполнения сначала после заданной начальной задержки, а затем с заданным периодом; то есть выполнения начнутся через initialDelay, затем через initialDelay + period, потом через initialDelay + 2 * period и так далее.
ScheduledFuture<?> scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit)
Отправляет периодическое действие, которое становится доступным для выполнения сначала после заданной начальной задержки, а затем с заданной задержкой между завершением одного выполнения и началом следующего.
void setContinueExistingPeriodicTasksAfterShutdownPolicy(boolean value)
Задает политику, определяющую, следует ли продолжать выполнение существующих периодических задач, даже если этот исполнитель был shutdown.
void setExecuteExistingDelayedTasksAfterShutdownPolicy(boolean value)
Задает политику, определяющую, следует ли выполнять существующие задачи с задержкой, даже если этот исполнитель был shutdown.
void setRemoveOnCancelPolicy(boolean value)
Задает политику, определяющую, следует ли немедленно удалять отмененные задачи из очереди работ при отмене.
void shutdown()
Начинает упорядоченное завершение работы, при котором ранее отправленные задачи выполняются, но новые задачи не принимаются.
List<Runnable> shutdownNow()
Пытается остановить все активно выполняемые задачи, прекращает обработку ожидающих задач и возвращает список задач, ожидавших выполнения.
Future<?> submit(Runnable task)
Отправляет задачу Runnable на выполнение и возвращает Future, представляющий эту задачу.
<T> Future<T> submit(Runnable task, T result)
Отправляет задачу Runnable на выполнение и возвращает Future, представляющий эту задачу.
<T> Future<T> submit(Callable<T> task)
Отправляет задачу, возвращающую значение, на выполнение и возвращает Future, представляющий ожидающие результаты задачи.

Методы, объявленные в классе ThreadPoolExecutor

afterExecute, allowCoreThreadTimeOut, allowsCoreThreadTimeOut, awaitTermination, beforeExecute, getActiveCount, getCompletedTaskCount, getCorePoolSize, getKeepAliveTime, getLargestPoolSize, getMaximumPoolSize, getPoolSize, getRejectedExecutionHandler, getTaskCount, getThreadFactory, isShutdown, isTerminated, isTerminating, prestartAllCoreThreads, prestartCoreThread, purge, remove, setCorePoolSize, setKeepAliveTime, setMaximumPoolSize, setRejectedExecutionHandler, setThreadFactory, terminated, toString
Модификатор и тип Метод Описание
protected void afterExecute(Runnable r, Throwable t)
Метод, вызываемый после завершения выполнения заданного Runnable.
void allowCoreThreadTimeOut(boolean value)
Задает политику, определяющую, могут ли основные потоки завершаться по тайм-ауту и прекращать работу, если в течение времени ожидания не поступают задачи; при поступлении новых задач при необходимости создаются замещающие потоки.
boolean allowsCoreThreadTimeOut()
Возвращает true, если этот пул позволяет основным потокам завершаться по тайм-ауту и прекращать работу, если в течение времени keepAlive не поступают задачи; при поступлении новых задач при необходимости создаются замещающие потоки.
boolean awaitTermination(long timeout, TimeUnit unit)
Блокирует выполнение до завершения всех задач после запроса на завершение работы, до истечения времени ожидания или до прерывания текущего потока — в зависимости от того, что произойдет первым.
protected void beforeExecute(Thread t, Runnable r)
Метод, вызываемый перед выполнением заданного Runnable в заданном потоке.
int getActiveCount()
Возвращает приблизительное количество потоков, активно выполняющих задачи.
long getCompletedTaskCount()
Возвращает приблизительное общее количество задач, выполнение которых завершено.
int getCorePoolSize()
Возвращает количество основных потоков.
long getKeepAliveTime(TimeUnit unit)
Возвращает время ожидания потока — время, в течение которого потоки могут оставаться бездействующими до завершения.
int getLargestPoolSize()
Возвращает наибольшее количество потоков, одновременно находившихся в пуле.
int getMaximumPoolSize()
Возвращает максимально допустимое количество потоков.
int getPoolSize()
Возвращает текущее количество потоков в пуле.
RejectedExecutionHandler getRejectedExecutionHandler()
Возвращает текущий обработчик невыполняемых задач.
long getTaskCount()
Возвращает приблизительное общее количество задач, выполнение которых когда-либо планировалось.
ThreadFactory getThreadFactory()
Возвращает фабрику потоков, используемую для создания новых потоков.
boolean isShutdown()
Возвращает true, если работа этого исполнителя была завершена.
boolean isTerminated()
Возвращает true, если после завершения работы все задачи выполнены.
boolean isTerminating()
Возвращает true, если этот исполнитель находится в процессе завершения после вызова ThreadPoolExecutor.shutdown() или ThreadPoolExecutor.shutdownNow(), но еще не завершил работу полностью.
int prestartAllCoreThreads()
Запускает все основные потоки, переводя их в режим ожидания работы.
boolean prestartCoreThread()
Запускает основной поток, переводя его в режим ожидания работы.
void purge()
Пытается удалить из очереди работ все задачи Future, которые были отменены.
boolean remove(Runnable task)
Удаляет эту задачу из внутренней очереди исполнителя, если она там присутствует, предотвращая ее запуск, если выполнение еще не началось.
void setCorePoolSize(int corePoolSize)
Задает количество основных потоков.
void setKeepAliveTime(long time, TimeUnit unit)
Задает время ожидания потока — время, в течение которого потоки могут оставаться бездействующими до завершения.
void setMaximumPoolSize(int maximumPoolSize)
Задает максимально допустимое количество потоков.
void setRejectedExecutionHandler(RejectedExecutionHandler handler)
Задает новый обработчик невыполняемых задач.
void setThreadFactory(ThreadFactory threadFactory)
Задает фабрику потоков, используемую для создания новых потоков.
protected void terminated()
Метод, вызываемый при завершении работы Executor.
String toString()
Возвращает строку, идентифицирующую этот пул и его состояние, включая сведения о состоянии выполнения и приблизительном количестве рабочих потоков и задач.

Методы, объявленные в классе AbstractExecutorService

invokeAll, invokeAll, invokeAny, invokeAny, newTaskFor, newTaskFor
Модификатор и тип Метод Описание
<T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks)
Выполняет заданные задачи и возвращает список объектов Future с их состояниями и результатами после завершения всех задач.
<T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)
Выполняет заданные задачи и возвращает список объектов Future с их состояниями и результатами после завершения всех задач или истечения времени ожидания — в зависимости от того, что произойдет первым.
<T> T invokeAny(Collection<? extends Callable<T>> tasks)
Выполняет заданные задачи и возвращает результат одной из них, успешно завершившейся (то есть не выбросившей исключение), если такая задача есть.
<T> T invokeAny(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)
Выполняет заданные задачи и возвращает результат одной из них, успешно завершившейся (то есть не выбросившей исключение), если такая задача завершится до истечения заданного времени ожидания.
protected <T> RunnableFuture<T> newTaskFor(Runnable runnable, T value)
Возвращает RunnableFuture для заданного runnable и значения по умолчанию.
protected <T> RunnableFuture<T> newTaskFor(Callable<T> callable)
Возвращает RunnableFuture для заданной задачи callable.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект какому-либо другому объекту.
protected void finalize()
Устарело, планируется удаление: этот элемент API может быть удален в будущей версии.
Финализация устарела и может быть удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо до истечения заданного времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо до истечения заданного времени.

Методы, объявленные в интерфейсе ExecutorService

close
Модификатор и тип Метод Описание
default void close()
Начинает упорядоченное завершение работы, при котором ранее отправленные задачи выполняются, но новые задачи не принимаются.

Подробное описание конструкторов

ScheduledThreadPoolExecutor

public ScheduledThreadPoolExecutor(int corePoolSize)
Создает новый ScheduledThreadPoolExecutor с заданным основным размером пула.
Параметры:
corePoolSize — количество потоков, которые следует сохранять в пуле, даже если они простаивают, если не задано allowCoreThreadTimeOut
Исключения:
IllegalArgumentException — если corePoolSize < 0

ScheduledThreadPoolExecutor

public ScheduledThreadPoolExecutor(int corePoolSize, ThreadFactory threadFactory)
Создает новый ScheduledThreadPoolExecutor с заданными начальными параметрами.
Параметры:
corePoolSize — количество потоков, которые следует сохранять в пуле, даже если они простаивают, если не задано allowCoreThreadTimeOut
threadFactory — фабрика, используемая исполнителем для создания нового потока
Исключения:
IllegalArgumentException — если corePoolSize < 0
NullPointerException — если threadFactory равно null

ScheduledThreadPoolExecutor

public ScheduledThreadPoolExecutor(int corePoolSize, RejectedExecutionHandler handler)
Создает новый ScheduledThreadPoolExecutor с заданными начальными параметрами.
Параметры:
corePoolSize — количество потоков, которые следует сохранять в пуле, даже если они простаивают, если не задано allowCoreThreadTimeOut
handler — обработчик, используемый при блокировке выполнения из-за достижения предельного количества потоков и емкости очереди
Исключения:
IllegalArgumentException — если corePoolSize < 0
NullPointerException — если handler равно null

ScheduledThreadPoolExecutor

public ScheduledThreadPoolExecutor(int corePoolSize, ThreadFactory threadFactory, RejectedExecutionHandler handler)
Создает новый ScheduledThreadPoolExecutor с заданными начальными параметрами.
Параметры:
corePoolSize — количество потоков, которые следует сохранять в пуле, даже если они простаивают, если не задано allowCoreThreadTimeOut
threadFactory — фабрика, используемая исполнителем для создания нового потока
handler — обработчик, используемый при блокировке выполнения из-за достижения предельного количества потоков и емкости очереди
Исключения:
IllegalArgumentException — если corePoolSize < 0
NullPointerException — если threadFactory или handler равно null

Подробное описание методов

decorateTask

protected <V> RunnableScheduledFuture<V> decorateTask(Runnable runnable, RunnableScheduledFuture<V> task)
Изменяет или заменяет задачу, используемую для выполнения runnable. Этот метод можно переопределить, чтобы изменить конкретный класс, используемый для управления внутренними задачами. Реализация по умолчанию просто возвращает заданную задачу.
Параметры типа:
V — тип результата задачи
Параметры:
runnable — отправленный Runnable
task — задача, созданная для выполнения runnable
Возвращает:
задачу, способную выполнить runnable
Начиная с версии:
1.6

decorateTask

protected <V> RunnableScheduledFuture<V> decorateTask(Callable<V> callable, RunnableScheduledFuture<V> task)
Изменяет или заменяет задачу, используемую для выполнения callable. Этот метод можно переопределить, чтобы изменить конкретный класс, используемый для управления внутренними задачами. Реализация по умолчанию просто возвращает заданную задачу.
Параметры типа:
V — тип результата задачи
Параметры:
callable — отправленный Callable
task — задача, созданная для выполнения callable
Возвращает:
задачу, способную выполнить callable
Начиная с версии:
1.6

schedule

public ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit)
Описание скопировано из интерфейса: ScheduledExecutorService
Отправляет одноразовую задачу, которая становится доступной для выполнения после указанной задержки.
Определено в:
schedule в интерфейсе ScheduledExecutorService
Параметры:
command — задача для выполнения
delay — время от текущего момента до выполнения задачи
unit — единица измерения параметра задержки
Возвращает:
ScheduledFuture, представляющий ожидающее завершения задачи; его метод get() вернет null после завершения
Исключения:
RejectedExecutionException — если невозможно запланировать выполнение задачи
NullPointerException — если command или unit равен null

schedule

public <V> ScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit)
Описание скопировано из интерфейса: ScheduledExecutorService
Отправляет одноразовую задачу, возвращающую значение и становящуюся доступной для выполнения после указанной задержки.
Определено в:
schedule в интерфейсе ScheduledExecutorService
Параметры типа:
V — тип результата callable
Параметры:
callable — функция для выполнения
delay — время от текущего момента до выполнения задачи
unit — единица измерения параметра задержки
Возвращает:
ScheduledFuture, который можно использовать для получения результата или отмены задачи
Исключения:
RejectedExecutionException — если невозможно запланировать выполнение задачи
NullPointerException — если callable или unit равен null

scheduleAtFixedRate

public ScheduledFuture<?> scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)
Отправляет периодическое действие, которое становится доступным для выполнения сначала после указанной начальной задержки, а затем с заданным периодом; то есть выполнение начнется после initialDelay, затем после initialDelay + period, затем после initialDelay + 2 * period и так далее.

Последовательность выполнений задачи продолжается бесконечно, пока не произойдет одно из следующих исключительных завершений:

  • Задача явно отменяется с помощью возвращенного future.
  • Вызывается метод shutdown(), а для политики продолжения после завершения работы не задано значение true, либо вызывается метод shutdownNow(); в обоих случаях задача отменяется.
  • При выполнении задачи возникает исключение. В этом случае вызов get для возвращенного future вызовет исключение ExecutionException, причиной которого будет это исключение.
Последующие выполнения подавляются. Последующие вызовы isDone() для возвращенного future вернут true.

Если выполнение этой задачи длится дольше периода, последующие выполнения могут начаться с опозданием, но не будут выполняться одновременно.

Определено в:
scheduleAtFixedRate в интерфейсе ScheduledExecutorService
Параметры:
command — задача для выполнения
initialDelay — задержка перед первым выполнением
period — период между последовательными выполнениями
unit — единица измерения параметров initialDelay и period
Возвращает:
ScheduledFuture, представляющий ожидающее завершения серии повторяющихся задач. Метод get() объекта future никогда не завершится обычным образом и вызовет исключение при отмене задачи или ее аварийном завершении.
Исключения:
RejectedExecutionException — если невозможно запланировать выполнение задачи
NullPointerException — если command или unit равен null
IllegalArgumentException — если period меньше или равен нулю

scheduleWithFixedDelay

public ScheduledFuture<?> scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit)
Отправляет периодическое действие, которое становится доступным для выполнения сначала после указанной начальной задержки, а затем с заданной задержкой между завершением одного выполнения и началом следующего.

Последовательность выполнений задачи продолжается бесконечно, пока не произойдет одно из следующих исключительных завершений:

  • Задача явно отменяется с помощью возвращенного future.
  • Вызывается метод shutdown(), а для политики продолжения после завершения работы не задано значение true, либо вызывается метод shutdownNow(); в обоих случаях задача отменяется.
  • При выполнении задачи возникает исключение. В этом случае вызов get для возвращенного future вызовет исключение ExecutionException, причиной которого будет это исключение.
Последующие выполнения подавляются. Последующие вызовы isDone() для возвращенного future вернут true.
Определено в:
scheduleWithFixedDelay в интерфейсе ScheduledExecutorService
Параметры:
command — задача для выполнения
initialDelay — задержка перед первым выполнением
delay — задержка между завершением одного выполнения и началом следующего
unit — единица измерения параметров initialDelay и delay
Возвращает:
ScheduledFuture, представляющий ожидающее завершения серии повторяющихся задач. Метод get() объекта future никогда не завершится обычным образом и вызовет исключение при отмене задачи или ее аварийном завершении.
Исключения:
RejectedExecutionException — если невозможно запланировать выполнение задачи
NullPointerException — если command или unit равен null
IllegalArgumentException — если delay меньше или равна нулю

execute

public void execute(Runnable command)
Выполняет command без обязательной задержки. Это эквивалентно вызову schedule(command, 0, anyUnit). Обратите внимание: при просмотре очереди и списка, возвращаемого методом shutdownNow, будет доступен объект ScheduledFuture с нулевой задержкой, а не сам command.

Следствием использования объектов ScheduledFuture является то, что метод afterExecute всегда вызывается со вторым аргументом Throwable, равным null, даже если command завершился аварийно. Вместо этого исключение Throwable, возникшее при выполнении такой задачи, можно получить с помощью Future.get().

Определено в:
execute в интерфейсе Executor
Переопределяет:
execute в классе ThreadPoolExecutor
Параметры:
command — задача для выполнения
Исключения:
RejectedExecutionException — по усмотрению RejectedExecutionHandler, если задача не может быть принята к выполнению, поскольку работа исполнителя была завершена
NullPointerException — если command равно null

submit

public Future<?> submit(Runnable task)
Описание скопировано из интерфейса: ExecutorService
Отправляет задачу Runnable для выполнения и возвращает Future, представляющий эту задачу. Метод get объекта Future вернет null при успешном завершении.
Определено в:
submit в интерфейсе ExecutorService
Переопределяет:
submit в классе AbstractExecutorService
Параметры:
task — задача для отправки
Возвращает:
Future, представляющий ожидающее завершения задачи
Исключения:
RejectedExecutionException — если невозможно запланировать выполнение задачи
NullPointerException — если задача равна null

submit

public <T> Future<T> submit(Runnable task, T result)
Описание скопировано из интерфейса: ExecutorService
Отправляет задачу Runnable для выполнения и возвращает Future, представляющий эту задачу. Метод get объекта Future вернет заданный результат при успешном завершении.
Определено в:
submit в интерфейсе ExecutorService
Переопределяет:
submit в классе AbstractExecutorService
Параметры типа:
T — тип результата
Параметры:
task — задача для отправки
result — возвращаемый результат
Возвращает:
Future, представляющий ожидающее завершения задачи
Исключения:
RejectedExecutionException — если невозможно запланировать выполнение задачи
NullPointerException — если задача равна null

submit

public <T> Future<T> submit(Callable<T> task)
Описание скопировано из интерфейса: ExecutorService
Отправляет задачу, возвращающую значение, для выполнения и возвращает Future, представляющий ожидающие результаты этой задачи. Метод get объекта Future вернет результат задачи при успешном завершении.

Если вы хотите сразу же ожидать завершения задачи, можно использовать конструкции следующего вида: result = exec.submit(aCallable).get();

Примечание. Класс Executors содержит набор методов, которые преобразуют некоторые другие распространенные объекты, подобные замыканиям, например PrivilegedAction, в форму Callable, позволяя отправлять их на выполнение.

Определено в:
submit в интерфейсе ExecutorService
Переопределяет:
submit в классе AbstractExecutorService
Параметры типа:
T — тип результата задачи
Параметры:
task — задача для отправки
Возвращает:
Future, представляющий ожидающее завершения задачи
Исключения:
RejectedExecutionException — если невозможно запланировать выполнение задачи
NullPointerException — если задача равна null

setContinueExistingPeriodicTasksAfterShutdownPolicy

public void setContinueExistingPeriodicTasksAfterShutdownPolicy(boolean value)
Задает политику продолжения выполнения существующих периодических задач даже после shutdown этого исполнителя. В этом случае выполнение продолжится до тех пор, пока не произойдет shutdownNow или пока политика не будет установлена в false после завершения работы. По умолчанию это значение равно false.
Параметры:
value — если true, продолжать после завершения работы, иначе не продолжать
См. также:
  • getContinueExistingPeriodicTasksAfterShutdownPolicy()

getContinueExistingPeriodicTasksAfterShutdownPolicy

public boolean getContinueExistingPeriodicTasksAfterShutdownPolicy()
Возвращает политику продолжения выполнения существующих периодических задач даже после shutdown этого исполнителя. В этом случае выполнение продолжится до тех пор, пока не произойдет shutdownNow или пока политика не будет установлена в false после завершения работы. По умолчанию это значение равно false.
Возвращает:
true, если выполнение продолжится после завершения работы
См. также:
  • setContinueExistingPeriodicTasksAfterShutdownPolicy(boolean)

setExecuteExistingDelayedTasksAfterShutdownPolicy

public void setExecuteExistingDelayedTasksAfterShutdownPolicy(boolean value)
Задает политику выполнения существующих задач с задержкой даже после shutdown этого исполнителя. В этом случае выполнение этих задач завершится только при shutdownNow или после установки политики в false после завершения работы. По умолчанию это значение равно true.
Параметры:
value — если true, выполнять после завершения работы, иначе не выполнять
См. также:
  • getExecuteExistingDelayedTasksAfterShutdownPolicy()

getExecuteExistingDelayedTasksAfterShutdownPolicy

public boolean getExecuteExistingDelayedTasksAfterShutdownPolicy()
Возвращает политику выполнения существующих задач с задержкой даже после shutdown этого исполнителя. В этом случае выполнение этих задач завершится только при shutdownNow или после установки политики в false после завершения работы. По умолчанию это значение равно true.
Возвращает:
true, если выполнение продолжится после завершения работы
См. также:
  • setExecuteExistingDelayedTasksAfterShutdownPolicy(boolean)

setRemoveOnCancelPolicy

public void setRemoveOnCancelPolicy(boolean value)
Задает политику немедленного удаления отмененных задач из рабочей очереди в момент отмены. По умолчанию это значение равно false.
Параметры:
value — если true, удалять при отмене, иначе не удалять
Начиная с версии:
1.7
См. также:
  • getRemoveOnCancelPolicy()

getRemoveOnCancelPolicy

public boolean getRemoveOnCancelPolicy()
Возвращает политику немедленного удаления отмененных задач из рабочей очереди в момент отмены. По умолчанию это значение равно false.
Возвращает:
true, если отмененные задачи немедленно удаляются из очереди
Начиная с версии:
1.7
См. также:
  • setRemoveOnCancelPolicy(boolean)

shutdown

public void shutdown()
Инициирует упорядоченное завершение работы: ранее отправленные задачи выполняются, но новые задачи не принимаются. Повторный вызов не оказывает дополнительного эффекта, если работа уже завершена.

Этот метод не ожидает завершения выполнения ранее отправленных задач. Для этого используйте awaitTermination.

Если для ExecuteExistingDelayedTasksAfterShutdownPolicy задано значение false, существующие задачи с задержкой, срок которой еще не наступил, отменяются. А если для ContinueExistingPeriodicTasksAfterShutdownPolicy не задано значение true, будущие выполнения существующих периодических задач будут отменены.

Определено в:
shutdown в интерфейсе ExecutorService
Переопределяет:
shutdown в классе ThreadPoolExecutor

shutdownNow

public List<Runnable> shutdownNow()
Пытается остановить все выполняемые задачи, прекращает обработку ожидающих задач и возвращает список задач, ожидавших выполнения. При возврате из этого метода эти задачи извлекаются (удаляются) из очереди задач.

Этот метод не ожидает завершения выполняемых задач. Для этого используйте awaitTermination.

Никаких гарантий, кроме попыток остановить выполняемые задачи с максимальными усилиями, не предоставляется. Эта реализация прерывает задачи с помощью Thread.interrupt(); задачи, не реагирующие на прерывания, могут никогда не завершиться.

Определено в:
shutdownNow в интерфейсе ExecutorService
Переопределяет:
shutdownNow в классе ThreadPoolExecutor
Возвращает:
список задач, выполнение которых так и не началось. Каждый элемент этого списка — ScheduledFuture. Для задач, отправленных одним из методов schedule, элемент будет идентичен возвращенному ScheduledFuture. Для задач, отправленных с помощью execute, элементом будет ScheduledFuture с нулевой задержкой.

getQueue

public BlockingQueue<Runnable> getQueue()
Возвращает очередь задач, используемую этим исполнителем. Доступ к очереди задач предназначен главным образом для отладки и мониторинга. Очередь может активно использоваться. Получение очереди задач не препятствует выполнению поставленных в нее задач.

Каждый элемент этой очереди — ScheduledFuture. Для задач, отправленных одним из методов schedule, элемент будет идентичен возвращенному ScheduledFuture. Для задач, отправленных с помощью execute, элементом будет ScheduledFuture с нулевой задержкой.

Не гарантируется, что при итерации по этой очереди задачи будут обходиться в порядке их выполнения.

Переопределяет:
getQueue в классе ThreadPoolExecutor
Возвращает:
очередь задач

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API