Spec-Zone.ru › OpenJDK 21

Класс 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, не перекрываются. Хотя различные выполнения могут выполняться разными потоками, последствия предыдущих выполнений предшествуют последующим.

Хотя этот класс наследуется от 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

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

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

ThreadPoolExecutor.AbortPolicy, ThreadPoolExecutor.CallerRunsPolicy, ThreadPoolExecutor.DiscardOldestPolicy, 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, представляющее ожидаемые результаты задачи.

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

afterExecute, allowCoreThreadTimeOut, allowsCoreThreadTimeOut, awaitTermination, beforeExecute, finalize, getActiveCount, getCompletedTaskCount, getCorePoolSize, getKeepAliveTime, getLargestPoolSize, getMaximumPoolSize, getPoolSize, getRejectedExecutionHandler, getTaskCount, getThreadFactory, isShutdown, isTerminated, isTerminating, prestartAllCoreThreads, prestartCoreThread, purge, remove, setCorePoolSize, setKeepAliveTime, setMaximumPoolSize, setRejectedExecutionHandler, setThreadFactory, terminated, toString

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

invokeAll, invokeAll, invokeAny, invokeAny, newTaskFor, newTaskFor

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

clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

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

awaitTermination, close, invokeAll, invokeAll, invokeAny, invokeAny, isShutdown, isTerminated

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

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 - если команда или единица измерения равны 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 или единица измерения равны null

scheduleAtFixedRate

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

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

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

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

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

scheduleWithFixedDelay

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

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

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

execute

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

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

Specified by:
execute в интерфейсе Executor
Overrides:
execute в классе ThreadPoolExecutor
Parameters:
command - задача для выполнения
Throws:
RejectedExecutionException - по усмотрению RejectedExecutionHandler, если задача не может быть принята для выполнения, потому что планировщик был закрыт
NullPointerException - если command равно null

submit

public Future<?> submit(Runnable task)
Описание скопировано из интерфейса: ExecutorService
Отправляет задачу Runnable на выполнение и возвращает Future, представляющий эту задачу. Метод get Future вернёт null при успешном завершении.
Specified by:
submit в интерфейсе ExecutorService
Overrides:
submit в классе AbstractExecutorService
Parameters:
task - задача для отправки
Returns:
Future, представляющий ожидаемое завершение задачи
Throws:
RejectedExecutionException - если задача не может быть запланирована для выполнения
NullPointerException - если задача равна null

submit

public <T> Future<T> submit(Runnable task, T result)
Описание скопировано из интерфейса: ExecutorService
Отправляет задачу Runnable на выполнение и возвращает Future, представляющий эту задачу. Метод get Future вернёт заданное значение при успешном завершении.
Specified by:
submit в интерфейсе ExecutorService
Overrides:
submit в классе AbstractExecutorService
Type Parameters:
T - тип результата
Parameters:
task - задача для отправки
result - значение для возврата
Returns:
Future, представляющий ожидаемое завершение задачи
Throws:
RejectedExecutionException - если задача не может быть запланирована для выполнения
NullPointerException - если задача равна null

submit

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

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

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

Specified by:
submit в интерфейсе ExecutorService
Overrides:
submit в классе AbstractExecutorService
Type Parameters:
T - тип результата задачи
Parameters:
task - задача для отправки
Returns:
Future, представляющий ожидаемое завершение задачи
Throws:
RejectedExecutionException - если задача не может быть запланирована для выполнения
NullPointerException - если задача равна null

setContinueExistingPeriodicTasksAfterShutdownPolicy

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

getContinueExistingPeriodicTasksAfterShutdownPolicy

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

setExecuteExistingDelayedTasksAfterShutdownPolicy

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

getExecuteExistingDelayedTasksAfterShutdownPolicy

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

Установить политику удаления при отмене

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

Получить политику удаления при отмене

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

shutdown

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

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

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

Определено в:
shutdown в интерфейсе ExecutorService
Переопределяет:
shutdown в классе ThreadPoolExecutor
Исключения:
SecurityException - если менеджер безопасности существует и остановка этого ExecutorService может манипулировать потоками, которые вызывающему объекту запрещено изменять, потому что у него нет RuntimePermission("modifyThread"), или метод checkAccess менеджера безопасности отказывается в доступе.

shutdownNow

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

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

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

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

getQueue

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

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

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

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

© 1993, 2023, 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/21/docs/api/java.base/java/util/concurrent/ScheduledThreadPoolExecutor.html

Spec-Zone.ru

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