Spec-Zone.ru › OpenJDK 25

Интерфейс ScheduledExecutorService

Все суперинтерфейсы:
AutoCloseable, Executor, ExecutorService
Все известные классы, реализующие этот интерфейс:
ForkJoinPool, ScheduledThreadPoolExecutor
public interface ScheduledExecutorService extends ExecutorService
ExecutorService, который может планировать выполнение команд по истечении заданной задержки или выполнять их периодически.

Методы schedule создают задачи с различными задержками и возвращают объект задачи, который можно использовать для отмены или проверки выполнения. Методы scheduleAtFixedRate и scheduleWithFixedDelay создают и выполняют задачи, которые выполняются периодически до отмены.

Команды, отправленные с помощью методов submit Executor.execute(Runnable) и ExecutorService, планируются с запрошенной задержкой, равной нулю. В методах 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() {
    Runnable beeper = () -> System.out.println("beep");
    ScheduledFuture<?> beeperHandle =
      scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS);
    Runnable canceller = () -> beeperHandle.cancel(false);
    scheduler.schedule(canceller, 1, HOURS);
  }
}
Начиная с версии:
1.5

Краткое описание методов

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

Методы, объявленные в интерфейсе Executor

execute

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

awaitTermination, close, invokeAll, invokeAll, invokeAny, invokeAny, isShutdown, isTerminated, shutdown, shutdownNow, submit, submit, submit

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

schedule

ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit)
Отправляет одноразовую задачу, которая становится доступной для выполнения по истечении заданной задержки.
Параметры:
command — задача для выполнения
delay — время от текущего момента до начала выполнения
unit — единица измерения параметра задержки
Возвращает:
ScheduledFuture, представляющий ожидающее завершения задачи и метод get() которого вернёт null после завершения
Вызывает:
RejectedExecutionException — если задачу невозможно запланировать для выполнения
NullPointerException — если command или unit равен null

schedule

<V> ScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit)
Отправляет одноразовую задачу, возвращающую значение и становящуюся доступной для выполнения по истечении заданной задержки.
Параметры типа:
V — тип результата callable
Параметры:
callable — функция для выполнения
delay — время от текущего момента до начала выполнения
unit — единица измерения параметра задержки
Возвращает:
ScheduledFuture, который можно использовать для получения результата или отмены задачи
Вызывает:
RejectedExecutionException — если задачу невозможно запланировать для выполнения
NullPointerException — если callable или unit равен null

scheduleAtFixedRate

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

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

  • Задача явно отменена с помощью возвращённого объекта future.
  • Работа исполнителя завершается, что также приводит к отмене задачи.
  • При выполнении задачи возникает исключение. В этом случае вызов get для возвращённого объекта future вызовет ExecutionException, содержащее это исключение в качестве причины.
Последующие выполнения подавляются. Последующие вызовы isDone() для возвращённого объекта future вернут true.

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

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

scheduleWithFixedDelay

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

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

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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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/25/docs/api/java.base/java/util/concurrent/ScheduledExecutorService.html

Spec-Zone.ru

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