|
Spec-Zone .ru
спецификации, руководства, описания, API
|
public class ScheduledThreadPoolExecutor extends ThreadPoolExecutor implements ScheduledExecutorService
ThreadPoolExecutor это может дополнительно запланировать команды, чтобы бежать за данной задержкой, или периодически выполняться. Этот class предпочтителен для Timer когда многократные рабочие потоки необходимы, или когда дополнительная гибкость или возможности ThreadPoolExecutor (который этот class расширяет), требуются. Задержанные задачи выполняются только, чем им включают, но без любых гарантий в реальном времени о том, когда, после того, как им включают, они начнут. Задачи, запланированные в течение точно того же самого времени выполнения, включаются в первым прибыл - первым убыл (FIFO) порядок представления.
Когда представленная задача отменяется прежде, чем она будет выполнена, выполнение подавляется. По умолчанию такая отмененная задача автоматически не удаляется из рабочего списка, пока его задержка не протекает. В то время как это включает дальнейшему контролю и контролю, он может также вызвать неограниченное задержание отмененных задач. Чтобы избежать этого, установить setRemoveOnCancelPolicy(boolean) к true, который заставляет задачи быть сразу удаленными из рабочего списка во время отмены.
Последовательное выполнение задачи, запланированной через scheduleAtFixedRate или scheduleWithFixedDelay не накладываться. В то время как различное выполнение может быть выполнено различными потоками, эффекты предшествующего выполнения происходят - перед таковыми из последующих.
В то время как этот class наследовался от ThreadPoolExecutor, несколько из наследованных настраивающих методов не полезны для этого. В частности потому что это действует как фиксированный - измеренное использование пула corePoolSize потоки и неограниченная очередь, корректировки maximumPoolSize не имейте никакого полезного действия. Дополнительно, это не почти никогда хорошая идея установить corePoolSize обнулять или использовать allowCoreThreadTimeOut потому что это может оставить пул без потоков, чтобы обработать задачи, как только они становятся имеющими право работать.
Примечания расширения: Этот class переопределяет execute и submit методы, чтобы генерировать внутренний ScheduledFuture объекты управлять задержками на задачу и планированием. Чтобы сохранить функциональность, дальнейшие переопределения этих методов в подклассах должны вызвать версии суперкласса, который эффективно отключает дополнительную настройку задачи. Однако, этот class обеспечивает альтернативу защищенный метод расширения 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, toStringinvokeAll, invokeAll, invokeAny, invokeAny, newTaskFor, newTaskForclone, equals, getClass, hashCode, notify, notifyAll, wait, wait, waitawaitTermination, invokeAll, invokeAll, invokeAny, invokeAny, isShutdown, isTerminatedpublic ScheduledThreadPoolExecutor(int corePoolSize)
ScheduledThreadPoolExecutor с данным ядром объединяют размер в пул.corePoolSize - число потоков, чтобы сохранить в пуле, даже если они не неактивны, если allowCoreThreadTimeOut устанавливаетсяIllegalArgumentException - если corePoolSize < 0public ScheduledThreadPoolExecutor(int corePoolSize,
ThreadFactory threadFactory)
ScheduledThreadPoolExecutor с данными начальными параметрами.corePoolSize - число потоков, чтобы сохранить в пуле, даже если они не неактивны, если allowCoreThreadTimeOut устанавливаетсяthreadFactory - фабрика, чтобы использовать, когда исполнитель создает новый потокIllegalArgumentException - если corePoolSize < 0NullPointerException - если threadFactory нульpublic ScheduledThreadPoolExecutor(int corePoolSize,
RejectedExecutionHandler handler)
corePoolSize - число потоков, чтобы сохранить в пуле, даже если они не неактивны, если allowCoreThreadTimeOut устанавливаетсяhandler - обработчик, чтобы использовать, когда выполнение блокируется, потому что границы потока и емкости очереди достигаютсяIllegalArgumentException - если corePoolSize < 0NullPointerException - если handler нульpublic ScheduledThreadPoolExecutor(int corePoolSize,
ThreadFactory threadFactory,
RejectedExecutionHandler handler)
corePoolSize - число потоков, чтобы сохранить в пуле, даже если они не неактивны, если allowCoreThreadTimeOut устанавливаетсяthreadFactory - фабрика, чтобы использовать, когда исполнитель создает новый потокhandler - обработчик, чтобы использовать, когда выполнение блокируется, потому что границы потока и емкости очереди достигаютсяIllegalArgumentException - если corePoolSize < 0NullPointerException - если 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)
ScheduledExecutorServiceschedule в интерфейсе ScheduledExecutorServicecommand - задача выполнитьсяdelay - время с этого времени, чтобы задержать выполнениеunit - единица измерения времени параметра задержкиRejectedExecutionException - если задача не может быть запланирована для выполненияNullPointerException - если команда является нулемpublic <V> ScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit)
ScheduledExecutorServiceschedule в интерфейсе ScheduledExecutorServicecallable - функция, чтобы выполнитьсяdelay - время с этого времени, чтобы задержать выполнениеunit - единица измерения времени параметра задержкиRejectedExecutionException - если задача не может быть запланирована для выполненияNullPointerException - если вызываемый нульpublic ScheduledFuture<?> scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)
ScheduledExecutorServicescheduleAtFixedRate в интерфейсе ScheduledExecutorServicecommand - задача выполнитьсяinitialDelay - время, чтобы задержать первое выполнениеperiod - период между последовательным выполнениемunit - единица измерения времени initialDelay и параметров периодаRejectedExecutionException - если задача не может быть запланирована для выполненияNullPointerException - если команда является нулемIllegalArgumentException - если период, меньше чем или равный нулюpublic ScheduledFuture<?> scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit)
ScheduledExecutorServicescheduleWithFixedDelay в интерфейсе ScheduledExecutorServicecommand - задача выполниться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 в интерфейсе Executorexecute в class ThreadPoolExecutorcommand - задача выполнитьсяRejectedExecutionException - по усмотрению RejectedExecutionHandler, если задача не может быть принята для выполнения, потому что исполнитель был выключенNullPointerException - если command нульpublic Future<?> submit(Runnable task)
ExecutorServicesubmit в интерфейсе ExecutorServicesubmit в class AbstractExecutorServicetask - задача подчинитьсяRejectedExecutionException - если задача не может быть запланирована для выполненияNullPointerException - если задачей является нульpublic <T> Future<T> submit(Runnable task, T result)
ExecutorServicesubmit в интерфейсе ExecutorServicesubmit в class AbstractExecutorServicetask - задача подчинитьсяresult - результат возвратитьсяRejectedExecutionException - если задача не может быть запланирована для выполненияNullPointerException - если задачей является нульpublic <T> Future<T> submit(Callable<T> task)
ExecutorServiceЕсли требуется сразу блокировать ожидание задачи, можно использовать конструкции формы result = exec.submit(aCallable).get();
Отметьте: Executors class включает ряд методов, которые могут преобразовать некоторые другие общие подобные закрытию объекты, например, PrivilegedAction к Callable сформируйтесь, таким образом, они могут быть представлены.
submit в интерфейсе ExecutorServicesubmit в class AbstractExecutorServicetask - задача подчиниться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 в интерфейсе ExecutorServiceshutdown в class ThreadPoolExecutorSecurityException - если менеджер безопасности существует, и завершающий работу этого ExecutorService может управлять потоками, которые вызывающей стороне не разрешают изменить, потому что это не содержит RuntimePermission("modifyThread"), или метод checkAccess менеджера безопасности лишает доступа.public List<Runnable> shutdownNow()
Этот метод не ожидает активного выполнения задач завершиться. Использовать awaitTermination сделать это.
Нет никаких гарантий вне попыток максимальных усилий прекратить обрабатывать активно выполняющиеся задачи. Эта реализация отменяет задачи через Thread.interrupt(), таким образом, любая задача, которая не в состоянии ответить на прерывания, никогда, возможно, не завершается.
shutdownNow в интерфейсе ExecutorServiceshutdownNow в class ThreadPoolExecutorScheduledFuture, включая те задачи, представленные, используя execute, которые являются для того, чтобы запланировать цели, используемые в качестве основания нулевой задержки ScheduledFuture.SecurityException - если менеджер безопасности существует, и завершающий работу этого ExecutorService может управлять потоками, которые вызывающей стороне не разрешают изменить, потому что это не содержит RuntimePermission("modifyThread"), или метод checkAccess менеджера безопасности лишает доступа.public BlockingQueue<Runnable> getQueue()
ScheduledFuture, включая те задачи, представленные, используя execute которые являются для того, чтобы запланировать цели, используемые в качестве основания нулевой задержки ScheduledFuture. Итерация по этой очереди, как гарантируют, не пересечет задачи в порядке, в котором они выполнятся.getQueue в class ThreadPoolExecutor
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92