Spec-Zone .ru
спецификации, руководства, описания, API
|
public class ScheduledThreadPoolExecutor extends ThreadPoolExecutor implements ScheduledExecutorService
ThreadPoolExecutor
это может дополнительно запланировать команды, чтобы бежать за данной задержкой, или периодически выполняться. Этот класс предпочтителен для Timer
когда многократные рабочие потоки необходимы, или когда дополнительная гибкость или возможности ThreadPoolExecutor
(который этот класс расширяет), требуются. Задержанные задачи выполняются только, чем им включают, но без любых гарантий в реальном времени о том, когда, после того, как им включают, они начнут. Задачи, запланированные в течение точно того же самого времени выполнения, включаются в первым прибыл - первым убыл (FIFO) порядок представления.
Когда представленная задача отменяется прежде, чем она будет выполнена, выполнение подавляется. По умолчанию такая отмененная задача автоматически не удаляется из рабочего списка, пока его задержка не протекает. В то время как это включает дальнейшему контролю и контролю, он может также вызвать неограниченное задержание отмененных задач. Чтобы избежать этого, установить setRemoveOnCancelPolicy(boolean)
к true
, который заставляет задачи быть сразу удаленными из рабочего списка во время отмены.
Последовательное выполнение задачи, запланированной через scheduleAtFixedRate
или scheduleWithFixedDelay
не накладываться. В то время как различное выполнение может быть выполнено различными потоками, эффекты предшествующего выполнения происходят - перед таковыми из последующих.
В то время как этот класс наследовался от ThreadPoolExecutor
, несколько из наследованных настраивающих методов не полезны для этого. В частности потому что это действует как фиксированный - измеренное использование пула corePoolSize
потоки и неограниченная очередь, корректировки maximumPoolSize
не имейте никакого полезного действия. Дополнительно, это не почти никогда хорошая идея установить corePoolSize
обнулять или использовать allowCoreThreadTimeOut
потому что это может оставить пул без потоков, чтобы обработать задачи, как только они становятся имеющими право работать.
Примечания расширения: Этот класс переопределяет execute
и submit
методы, чтобы генерировать внутренний ScheduledFuture
объекты управлять задержками на задачу и планированием. Чтобы сохранить функциональность, дальнейшие переопределения этих методов в подклассах должны вызвать версии суперкласса, который эффективно отключает дополнительную настройку задачи. Однако, этот класс обеспечивает альтернативу защищенный метод расширения decorateTask
(одна версия каждый для Runnable
и Callable
) это может использоваться, чтобы настроить конкретные типы задачи, используемые, чтобы выполнить команды, вводимые через execute
, submit
, schedule
, scheduleAtFixedRate
, и scheduleWithFixedDelay
. По умолчанию, a 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.
}
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(Callable<V> callable, RunnableScheduledFuture<V> task)
Изменяет или заменяет задачу, используемую, чтобы выполнить вызываемое.
|
protected <V> RunnableScheduledFuture<V> |
decorateTask(Runnable runnable, RunnableScheduledFuture<V> task)
Изменяет или заменяет задачу, используемую, чтобы выполнить выполнимое.
|
void |
execute(Runnable command)
Выполняется
command с нулем требуемая задержка. |
boolean |
getContinueExistingPeriodicTasksAfterShutdownPolicy()
Надевает политику, продолжать ли выполнять существующие периодические задачи, даже когда этот исполнитель был
shutdown . |
boolean |
getExecuteExistingDelayedTasksAfterShutdownPolicy()
Надевает политику, выполнить ли существующие задержанные задачи, даже когда этот исполнитель был
shutdown . |
BlockingQueue<Runnable> |
getQueue()
Возвращает очередь задачи, используемую этим исполнителем.
|
boolean |
getRemoveOnCancelPolicy()
Надевает политику, должны ли отмененные задачи быть сразу удалены из рабочего списка во время отмены.
|
<V> ScheduledFuture<V> |
schedule(Callable<V> callable, long delay, TimeUnit unit)
Создает и выполняет ScheduledFuture, который становится включенным после данной задержки.
|
ScheduledFuture<?> |
schedule(Runnable command, 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()
Попытки остановить все активно выполняющиеся задачи, останавливает обработку ожидающих задач, и возвращает список задач, которые ждали выполнения.
|
<T> Future<T> |
submit(Callable<T> task)
Представляет возвращающую значение задачу для выполнения и возвращает Будущее, представляющее результаты на ожидании задачи.
|
Future<?> |
submit(Runnable task)
Представляет Выполнимую задачу для выполнения и возвращает Будущее, представляющее ту задачу.
|
<T> Future<T> |
submit(Runnable task, T result)
Представляет Выполнимую задачу для выполнения и возвращает Будущее, представляющее ту задачу.
|
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
invokeAll, invokeAll, invokeAny, invokeAny, newTaskFor, newTaskFor
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
awaitTermination, invokeAll, invokeAll, invokeAny, invokeAny, isShutdown, isTerminated
public ScheduledThreadPoolExecutor(int corePoolSize)
ScheduledThreadPoolExecutor
с данным ядром объединяют размер в пул.corePoolSize
- число потоков, чтобы сохранить в пуле, даже если они не неактивны, если allowCoreThreadTimeOut
устанавливаетсяIllegalArgumentException
- если corePoolSize < 0
public ScheduledThreadPoolExecutor(int corePoolSize, ThreadFactory threadFactory)
ScheduledThreadPoolExecutor
с данными начальными параметрами.corePoolSize
- число потоков, чтобы сохранить в пуле, даже если они не неактивны, если allowCoreThreadTimeOut
устанавливаетсяthreadFactory
- фабрика, чтобы использовать, когда исполнитель создает новый потокIllegalArgumentException
- если corePoolSize < 0
NullPointerException
- если threadFactory
нульpublic ScheduledThreadPoolExecutor(int corePoolSize, RejectedExecutionHandler handler)
corePoolSize
- число потоков, чтобы сохранить в пуле, даже если они не неактивны, если allowCoreThreadTimeOut
устанавливаетсяhandler
- обработчик, чтобы использовать, когда выполнение блокируется, потому что границы потока и емкости очереди достигаютсяIllegalArgumentException
- если corePoolSize < 0
NullPointerException
- если handler
нульpublic ScheduledThreadPoolExecutor(int corePoolSize, ThreadFactory threadFactory, RejectedExecutionHandler handler)
corePoolSize
- число потоков, чтобы сохранить в пуле, даже если они не неактивны, если allowCoreThreadTimeOut
устанавливаетсяthreadFactory
- фабрика, чтобы использовать, когда исполнитель создает новый потокhandler
- обработчик, чтобы использовать, когда выполнение блокируется, потому что границы потока и емкости очереди достигаютсяIllegalArgumentException
- если corePoolSize < 0
NullPointerException
- если threadFactory
или handler
нульprotected <V> RunnableScheduledFuture<V> decorateTask(Runnable runnable, RunnableScheduledFuture<V> task)
runnable
- представленное Выполнимоеtask
- задача, создаваемая, чтобы выполнить выполнимоеprotected <V> RunnableScheduledFuture<V> decorateTask(Callable<V> callable, RunnableScheduledFuture<V> task)
callable
- представленное Вызываемоеtask
- задача, создаваемая, чтобы выполнить вызываемоеpublic ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit)
ScheduledExecutorService
schedule
в интерфейсе ScheduledExecutorService
command
- задача выполнитьсяdelay
- время с этого времени, чтобы задержать выполнениеunit
- единица измерения времени параметра задержкиRejectedExecutionException
- если задача не может быть запланирована для выполненияNullPointerException
- если команда является нулемpublic <V> ScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit)
ScheduledExecutorService
schedule
в интерфейсе ScheduledExecutorService
callable
- функция, чтобы выполнитьсяdelay
- время с этого времени, чтобы задержать выполнениеunit
- единица измерения времени параметра задержкиRejectedExecutionException
- если задача не может быть запланирована для выполненияNullPointerException
- если вызываемый нульpublic ScheduledFuture<?> scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)
ScheduledExecutorService
scheduleAtFixedRate
в интерфейсе ScheduledExecutorService
command
- задача выполнитьсяinitialDelay
- время, чтобы задержать первое выполнениеperiod
- период между последовательным выполнениемunit
- единица измерения времени initialDelay и параметров периодаRejectedExecutionException
- если задача не может быть запланирована для выполненияNullPointerException
- если команда является нулемIllegalArgumentException
- если период, меньше чем или равный нулюpublic ScheduledFuture<?> scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit)
ScheduledExecutorService
scheduleWithFixedDelay
в интерфейсе ScheduledExecutorService
command
- задача выполнитьсяinitialDelay
- время, чтобы задержать первое выполнениеdelay
- задержка между завершением одного выполнения и началом следующегоunit
- единица измерения времени initialDelay и параметров задержкиRejectedExecutionException
- если задача не может быть запланирована для выполненияNullPointerException
- если команда является нулемIllegalArgumentException
- если задержка, меньше чем или равная нулю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
нульpublic Future<?> submit(Runnable task)
ExecutorService
submit
в интерфейсе ExecutorService
submit
в классе AbstractExecutorService
task
- задача подчинитьсяRejectedExecutionException
- если задача не может быть запланирована для выполненияNullPointerException
- если задачей является нульpublic <T> Future<T> submit(Runnable task, T result)
ExecutorService
submit
в интерфейсе ExecutorService
submit
в классе AbstractExecutorService
task
- задача подчинитьсяresult
- результат возвратитьсяRejectedExecutionException
- если задача не может быть запланирована для выполненияNullPointerException
- если задачей является нульpublic <T> Future<T> submit(Callable<T> task)
ExecutorService
Если требуется сразу блокировать ожидание задачи, можно использовать конструкции формы result = exec.submit(aCallable).get();
Отметьте: Executors
класс включает ряд методов, которые могут преобразовать некоторые другие общие подобные закрытию объекты, например, PrivilegedAction
к Callable
сформируйтесь, таким образом, они могут быть представлены.
submit
в интерфейсе ExecutorService
submit
в классе AbstractExecutorService
task
- задача подчинитьсяRejectedExecutionException
- если задача не может быть запланирована для выполненияNullPointerException
- если задачей является нульpublic void setContinueExistingPeriodicTasksAfterShutdownPolicy(boolean value)
shutdown
. В этом случае эти задачи только завершатся на shutdownNow
или после установки политики к false
когда уже завершают работу. Это значение по умолчанию false
.value
- если true
, продолжайте после завершения работы, еще не делайте.getContinueExistingPeriodicTasksAfterShutdownPolicy()
public boolean getContinueExistingPeriodicTasksAfterShutdownPolicy()
shutdown
. В этом случае эти задачи только завершатся на shutdownNow
или после установки политики к false
когда уже завершают работу. Это значение по умолчанию false
.true
если будет продолжаться после завершения работыsetContinueExistingPeriodicTasksAfterShutdownPolicy(boolean)
public void setExecuteExistingDelayedTasksAfterShutdownPolicy(boolean value)
shutdown
. В этом случае эти задачи только завершатся на shutdownNow
, или после установки политики к false
когда уже завершают работу. Это значение по умолчанию true
.value
- если true
, выполнитесь после завершения работы, еще не делайте.getExecuteExistingDelayedTasksAfterShutdownPolicy()
public boolean getExecuteExistingDelayedTasksAfterShutdownPolicy()
shutdown
. В этом случае эти задачи только завершатся на shutdownNow
, или после установки политики к false
когда уже завершают работу. Это значение по умолчанию true
.true
если выполнится после завершения работыsetExecuteExistingDelayedTasksAfterShutdownPolicy(boolean)
public void setRemoveOnCancelPolicy(boolean value)
false
.value
- если true
, удалите на отмене, еще не делайтеgetRemoveOnCancelPolicy()
public boolean getRemoveOnCancelPolicy()
false
.true
если отмененные задачи были сразу удалены из очередиsetRemoveOnCancelPolicy(boolean)
public void shutdown()
Этот метод не ожидает ранее представленных задач завершить выполнение. Использовать awaitTermination
сделать это.
Если ExecuteExistingDelayedTasksAfterShutdownPolicy
был установлен false
, отменяются существующие задержанные задачи, задержки которых еще не протекли. И если ContinueExistingPeriodicTasksAfterShutdownPolicy
был установлен true
, будет отменено будущее выполнение существующих периодических задач.
shutdown
в интерфейсе ExecutorService
shutdown
в классе ThreadPoolExecutor
SecurityException
- если менеджер безопасности существует, и завершающий работу этого ExecutorService может управлять потоками, которые вызывающей стороне не разрешают изменить, потому что это не содержит RuntimePermission
("modifyThread"), или метод checkAccess менеджера безопасности лишает доступа.public List<Runnable> shutdownNow()
Этот метод не ожидает активного выполнения задач завершиться. Использовать awaitTermination
сделать это.
Нет никаких гарантий вне попыток максимальных усилий прекратить обрабатывать активно выполняющиеся задачи. Эта реализация отменяет задачи через Thread.interrupt()
, таким образом, любая задача, которая не в состоянии ответить на прерывания, никогда, возможно, не завершается.
shutdownNow
в интерфейсе ExecutorService
shutdownNow
в классе ThreadPoolExecutor
ScheduledFuture
, включая те задачи, представленные, используя execute
, которые являются для того, чтобы запланировать цели, используемые в качестве основания нулевой задержки ScheduledFuture
.SecurityException
- если менеджер безопасности существует, и завершающий работу этого ExecutorService может управлять потоками, которые вызывающей стороне не разрешают изменить, потому что это не содержит RuntimePermission
("modifyThread"), или метод checkAccess менеджера безопасности лишает доступа.public BlockingQueue<Runnable> getQueue()
ScheduledFuture
, включая те задачи, представленные, используя execute
которые являются для того, чтобы запланировать цели, используемые в качестве основания нулевой задержки ScheduledFuture
. Итерация по этой очереди, как гарантируют, не пересечет задачи в порядке, в котором они выполнятся.getQueue
в классе ThreadPoolExecutor
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.