Класс ScheduledThreadPoolExecutor
- java.lang.Object
-
- java.util.concurrent.AbstractExecutorService
-
- java.util.concurrent.ThreadPoolExecutor
-
- java.util.concurrent.ScheduledThreadPoolExecutor
- Все реализованные интерфейсы:
-
Executor,ExecutorService,ScheduledExecutorService
public class ScheduledThreadPoolExecutor extends ThreadPoolExecutor implements ScheduledExecutorService
A ThreadPoolExecutor который дополнительно может планировать выполнение команд после заданной задержки или периодическое выполнение. Этот класс предпочтительнее Timer когда требуется несколько рабочих потоков или необходима дополнительная гибкость или возможности ThreadPoolExecutor (который этот класс расширяет).
Задачи с задержкой выполняются не раньше, чем они разрешены, но без каких-либо гарантий реального времени о том, когда, после разрешения, они начнутся. Задачи, запланированные на одинаковое время выполнения, разрешаются в порядке очереди FIFO (первый пришёл, первый обслужен) в порядке их поступления.
Если задача, отправленная на выполнение, отменяется до ее запуска, выполнение подавляется. По умолчанию такая отменённая задача не удаляется автоматически из очереди задач до истечения её задержки. Хотя это позволяет проводить дальнейший анализ и мониторинг, это может также привести к неограниченному хранению отменённых задач. Чтобы избежать этого, используйте setRemoveOnCancelPolicy(boolean), чтобы задачи удалялись немедленно из очереди задач при отмене.
Последовательные исполнения периодической задачи, запланированной с помощью scheduleAtFixedRate или scheduleWithFixedDelay, не перекрываются. Хотя разные исполнения могут выполняться в разных потоках, результаты предыдущих исполнений happen-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
Вложенные классы
Вложенные классы/интерфейсы, объявленные в классе java.util.concurrent.ThreadPoolExecutor
ThreadPoolExecutor.AbortPolicy, ThreadPoolExecutor.CallerRunsPolicy, ThreadPoolExecutor.DiscardOldestPolicy, ThreadPoolExecutor.DiscardPolicy Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
ScheduledThreadPoolExecutor(int corePoolSize) | Создаёт новый |
ScheduledThreadPoolExecutor(int corePoolSize,
RejectedExecutionHandler handler) | Создаёт новый |
ScheduledThreadPoolExecutor(int corePoolSize,
ThreadFactory threadFactory) | Создаёт новый |
ScheduledThreadPoolExecutor(int corePoolSize,
ThreadFactory threadFactory,
RejectedExecutionHandler handler) | Создаёт новый |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
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) | Выполняет |
boolean | getContinueExistingPeriodicTasksAfterShutdownPolicy() | Получает политику относительно продолжения выполнения существующих периодических задач даже когда этот экзекутор был |
boolean | getExecuteExistingDelayedTasksAfterShutdownPolicy() | Получает политику относительно выполнения существующих задач с задержкой даже когда этот экзекутор был |
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) | Отправляет периодическое действие, которое активируется сначала после заданной начальной задержки и затем с заданным периодом; то есть, выполнения начнутся после |
ScheduledFuture<?> | scheduleWithFixedDelay(Runnable command,
long initialDelay,
long delay,
TimeUnit unit) | Отправляет периодическое действие, которое активируется сначала после заданной начальной задержки, а затем с заданной задержкой между окончанием одного выполнения и началом следующего. |
void | setContinueExistingPeriodicTasksAfterShutdownPolicy(boolean value) | Устанавливает политику относительно продолжения выполнения существующих периодических задач, даже когда этот экзекутор был |
void | setExecuteExistingDelayedTasksAfterShutdownPolicy(boolean value) | Устанавливает политику относительно выполнения существующих задач с задержкой, даже когда этот экзекутор был |
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, beforeExecute, finalize, getActiveCount, getCompletedTaskCount, getCorePoolSize, getKeepAliveTime, getLargestPoolSize, getMaximumPoolSize, getPoolSize, getRejectedExecutionHandler, getTaskCount, getThreadFactory, isTerminating, prestartAllCoreThreads, prestartCoreThread, purge, remove, setCorePoolSize, setKeepAliveTime, setMaximumPoolSize, setRejectedExecutionHandler, setThreadFactory, terminated, toString Методы, объявленные в классе java.util.concurrent.AbstractExecutorService
newTaskFor, newTaskFor Методы, объявленные в классе java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait Методы, объявленные в интерфейсе java.util.concurrent.ExecutorService
awaitTermination, 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) Изменяет или заменяет задачу, используемую для выполнения исполняемого объекта. Этот метод может использоваться для переопределения конкретного класса, используемого для управления внутренними задачами. Реализация по умолчанию просто возвращает заданную задачу.
- Параметры типа:
-
V- тип результата задачи - Параметры:
-
runnable- переданный Runnable -
task- задача, созданная для выполнения исполняемого объекта - Возвращает:
- задачу, которая может выполнить исполняемый объект
- С версии:
- 1.6
decorateTask
protected <V> RunnableScheduledFuture<V> decorateTask(Callable<V> callable,
RunnableScheduledFuture<V> task) Изменяет или заменяет задачу, используемую для выполнения вызываемого объекта. Этот метод может использоваться для переопределения конкретного класса, используемого для управления внутренними задачами. Реализация по умолчанию просто возвращает заданную задачу.
- Параметры типа:
-
V- тип результата задачи - Параметры:
-
callable- переданный Callable -
task- задача, созданная для выполнения вызываемого объекта - Возвращает:
- задачу, которая может выполнить вызываемый объект
- С версии:
- 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- функция для выполнения -
delay- время задержки выполнения с текущего момента -
unit- единица времени параметра задержки - Возвращает:
- ScheduledFuture, который можно использовать для извлечения результата или отмены
- Исключения:
-
RejectedExecutionException- если задачу невозможно запланировать на выполнение -
NullPointerException- если вызываемый объект или единица времени равны 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- если команда или единица времени равны null -
IllegalArgumentException- если период меньше или равен нулю
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- если команда или единица времени равны null -
IllegalArgumentException- если задержка меньше или равна нулю
execute
public void execute(Runnable command)
Выполняет command с нулевой требуемой задержкой. Это имеет эффект, эквивалентный schedule(command, 0, anyUnit). Обратите внимание, что проверки очереди и списка, возвращаемого shutdownNow, будут обращаться к ScheduledFuture с нулевой задержкой, а не к самому command.
Следствием использования объектов ScheduledFuture является то, что afterExecute всегда вызывается с нулевым вторым аргументом Throwable, даже если 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)
Устанавливает политику, определяющую, нужно ли продолжать выполнение существующих периодических задач даже когда этот executor был shutdown. В этом случае выполнение будет продолжаться до shutdownNow или политика будет установлена в значение false при уже выполненном завершении. Значение по умолчанию равно false.
- Параметры:
-
value- еслиtrue, продолжить после завершения, иначе нет - См. также:
getContinueExistingPeriodicTasksAfterShutdownPolicy()
getContinueExistingPeriodicTasksAfterShutdownPolicy
public boolean getContinueExistingPeriodicTasksAfterShutdownPolicy()
Получает политику, определяющую, нужно ли продолжать выполнение существующих периодических задач даже когда этот executor был shutdown. В этом случае выполнение будет продолжаться до shutdownNow или политика будет установлена в значение false при уже выполненном завершении. Значение по умолчанию равно false.
- Возвращает:
-
trueесли продолжать после завершения - См. также:
setContinueExistingPeriodicTasksAfterShutdownPolicy(boolean)
setExecuteExistingDelayedTasksAfterShutdownPolicy
public void setExecuteExistingDelayedTasksAfterShutdownPolicy(boolean value)
Устанавливает политику, определяющую, нужно ли выполнять существующие отложенные задачи, даже когда этот executor был shutdown. В этом случае эти задачи завершатся только при shutdownNow, или после установки политики в false при уже выполненном завершении. Значение по умолчанию равно true.
- Параметры:
-
value- еслиtrue, выполнять после завершения, иначе нет - См. также:
getExecuteExistingDelayedTasksAfterShutdownPolicy()
getExecuteExistingDelayedTasksAfterShutdownPolicy
public boolean getExecuteExistingDelayedTasksAfterShutdownPolicy()
Получает политику, определяющую, нужно ли выполнять существующие отложенные задачи, даже когда этот executor был 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 - Исключения:
-
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()
Возвращает очередь задач, используемую этим executor. Доступ к очереди задач предназначен в первую очередь для отладки и мониторинга. Эта очередь может быть в активном использовании. Получение очереди задач не предотвращает выполнение задач в очереди.
Каждый элемент этой очереди — ScheduledFuture. Для задач, отправленных через один из методов schedule, элемент будет идентичен возвращённому ScheduledFuture. Для задач, отправленных с помощью execute, элемент будет ScheduledFuture с нулевой задержкой.
Итерация по этой очереди не гарантирует прохождение задач в порядке, в котором они будут выполняться.
- Переопределяет:
-
getQueueв классеThreadPoolExecutor - Возвращает:
- очередь задач
© 1993, 2020, 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/11/docs/api/java.base/java/util/concurrent/ScheduledThreadPoolExecutor.html