Интерфейс ScheduledExecutorService
- Все суперинтерфейсы:
- Executor, ExecutorService
- Все известные реализующие классы:
- ScheduledThreadPoolExecutor
public interface ScheduledExecutorService extends ExecutorService
An ExecutorService что может планировать выполнение команд после заданной задержки или периодически.
Методы schedule создают задачи с различными задержками и возвращают объект задачи, который может использоваться для отмены или проверки выполнения. Методы scheduleAtFixedRate и scheduleWithFixedDelay создают и выполняют задачи, которые выполняются периодически до отмены.
Команды, отправленные с помощью методов Executor.execute(Runnable) и ExecutorService submit планируются с запрошенной задержкой ноль. Нулевые и отрицательные задержки (но не периоды) также разрешены в методах schedule, и обрабатываются как запросы на немедленное выполнение.
Все schedule методы принимают относительные задержки и периоды в качестве аргументов, а не абсолютные временные интервалы или даты. Преобразование абсолютного времени, представленного как Date, в необходимый формат является простым делом. Например, чтобы запланировать задачу на определенное будущее date, можно использовать: schedule(task,
date.getTime() - System.currentTimeMillis(),
TimeUnit.MILLISECONDS). Однако следует помнить, что истечение относительной задержки может не совпадать с текущим Date времени, на котором задача активирована, из-за протоколов синхронизации сетевого времени, дрейфа часов или других факторов.
Класс Executors предоставляет удобные фабричные методы для реализаций ScheduledExecutorService, предоставленных в этом пакете.
Пример использования
Вот класс с методом, который настраивает ScheduledExecutorService для воспроизведения звука каждый десять секунд в течение часа:import static java.util.concurrent.TimeUnit.*;
class BeeperControl {
private final ScheduledExecutorService scheduler =
Executors.newScheduledThreadPool(1);
public void beepForAnHour() {
final Runnable beeper = new Runnable() {
public void run() { System.out.println("beep"); }
};
final ScheduledFuture<?> beeperHandle =
scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS);
scheduler.schedule(new Runnable() {
public void run() { beeperHandle.cancel(true); }
}, 60 * 60, SECONDS);
}
}
- С:
- 1.5
Методы
| Модификатор и тип | Метод и описание |
|---|---|
<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) Создает и выполняет периодическое действие, которое становится активным сначала после заданной начальной задержки, а затем с заданным периодом; то есть выполнение начнется после |
ScheduledFuture<?> |
scheduleWithFixedDelay(Runnable command,
long initialDelay,
long delay,
TimeUnit unit) Создает и выполняет периодическое действие, которое становится активным сначала после заданной начальной задержки, а затем с заданной задержкой между завершением одного выполнения и началом следующего. |
Методы, унаследованные от интерфейса java.util.concurrent.ExecutorService
awaitTermination, invokeAll, invokeAll, invokeAny, invokeAny, isShutdown, isTerminated, shutdown, shutdownNow, submit, submit, submit Методы, унаследованные от интерфейса java.util.concurrent.Executor
execute Методы
schedule
ScheduledFuture<?> schedule(Runnable command,
long delay,
TimeUnit unit) Создает и выполняет одноразовое действие, которое становится активным после заданной задержки.
- Параметры:
-
command- задача для выполнения -
delay- время задержки выполнения с текущего момента -
unit- единица измерения времени для параметра задержки - Возвращает:
- ScheduledFuture, представляющий ожидаемое завершение задачи, и метод
get(), который вернетnullпо завершении - Исключения:
-
RejectedExecutionException- если задача не может быть запланирована для выполнения -
NullPointerException- если команда равна null
schedule
<V> ScheduledFuture<V> schedule(Callable<V> callable,
long delay,
TimeUnit unit) Создает и выполняет ScheduledFuture, который становится активным после заданной задержки.
- Параметры типа:
-
V- тип результата вызова - Параметры:
-
callable- функция для выполнения -
delay- время задержки выполнения с текущего момента -
unit- единица измерения времени для параметра задержки - Возвращает:
- ScheduledFuture, который может быть использован для извлечения результата или отмены
- Исключения:
-
RejectedExecutionException- если задача не может быть запланирована для выполнения -
NullPointerException- если callable равно null
scheduleAtFixedRate
ScheduledFuture<?> scheduleAtFixedRate(Runnable command,
long initialDelay,
long period,
TimeUnit unit) Создает и выполняет периодическое действие, которое становится активным сначала после заданной начальной задержки, а затем с заданным периодом; то есть выполнение начнется после initialDelay затем initialDelay+period, затем initialDelay + 2 * period, и так далее. Если какое-либо выполнение задачи вызывает исключение, последующие выполнения подавляются. В противном случае задача завершится только путем отмены или завершения исполнителя. Если любое выполнение этой задачи занимает больше времени, чем ее период, последующие выполнения могут начаться с опозданием, но не будут выполняться одновременно.
- Параметры:
-
command- задача для выполнения -
initialDelay- время задержки первого выполнения -
period- период между последующими выполнениями -
unit- единица измерения времени для параметров initialDelay и period - Возвращает:
- ScheduledFuture, представляющий ожидаемое завершение задачи, и метод
get()выбросит исключение при отмене - Исключения:
-
RejectedExecutionException- если задача не может быть запланирована для выполнения -
NullPointerException- если команда равна null -
IllegalArgumentException- если период меньше или равен нулю
scheduleWithFixedDelay
ScheduledFuture<?> scheduleWithFixedDelay(Runnable command,
long initialDelay,
long delay,
TimeUnit unit) Создает и выполняет периодическое действие, которое становится активным сначала после заданной начальной задержки, а затем с заданной задержкой между завершением одного выполнения и началом следующего. Если какое-либо выполнение задачи вызывает исключение, последующие выполнения подавляются. В противном случае задача завершится только путем отмены или завершения исполнителя.
- Параметры:
-
command- задача для выполнения -
initialDelay- время задержки первого выполнения -
delay- задержка между завершением одного выполнения и началом следующего -
unit- единица измерения времени для параметров initialDelay и delay - Возвращает:
- ScheduledFuture, представляющий ожидаемое завершение задачи, и метод
get()выбросит исключение при отмене - Исключения:
-
RejectedExecutionException- если задача не может быть запланирована для выполнения -
NullPointerException- если команда равна null -
IllegalArgumentException- если задержка меньше или равна нулю
© 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.