Учебники

ScheduledThreadPoolExecutor Класс

java.util.concurrent.ScheduledThreadPoolExecutor является подклассом ThreadPoolExecutor и может дополнительно запланировать выполнение команд после заданной задержки или периодическое выполнение.

Методы ScheduledThreadPoolExecutor

Sr.No. Метод и описание
1

защищенный <V> RunnableScheduledFuture <V> decorateTask (Callable <V> callable, RunnableScheduledFuture <V> задача)

Изменяет или заменяет задачу, используемую для выполнения вызова.

2

защищенный <V> RunnableScheduledFuture <V> decorateTask (Runnable runnable, задача RunnableScheduledFuture <V>)

Изменяет или заменяет задачу, используемую для выполнения работоспособного объекта.

3

void execute (команда Runnable)

Выполняет команду с нулевой задержкой.

4

boolean getContinueExistingPeriodicTasksAfterShutdownPolicy ()

Получает политику о том, продолжать ли выполнение существующих периодических задач, даже если этот исполнитель был выключен.

5

boolean getExecuteExistingDelayedTasksAfterShutdownPolicy ()

Получает политику о том, выполнять ли существующие отложенные задачи, даже если этот исполнитель был выключен.

6

BlockingQueue <Runnable> getQueue ()

Возвращает очередь задач, использованную этим исполнителем.

7

логическое значение getRemoveOnCancelPolicy ()

Получает политику о том, следует ли немедленно удалять отмененные задачи из рабочей очереди во время отмены.

8

Расписание <V> ScheduledFuture <V> (вызываемое <V>, длительная задержка, единица времени)

Создает и выполняет ScheduledFuture, которое становится активным после заданной задержки.

9

ScheduledFuture <?> Schedule (команда Runnable, длительная задержка, единица времени)

Создает и выполняет одноразовое действие, которое становится активным после заданной задержки.

10

ScheduledFuture <?> ScheduleAtFixedRate (команда Runnable, длинный initialDelay, длительный период, единица времени)

Создает и выполняет периодическое действие, которое становится активным сначала после заданной начальной задержки, а затем с заданным периодом; то есть выполнение начнется после initialDelay, затем initialDelay + period, затем initialDelay + 2 * period и так далее.

11

ScheduledFuture <?> ScheduleWithFixedDelay (команда Runnable, long initialDelay, длинная задержка, единица времени)

Создает и выполняет периодическое действие, которое становится активным в первую очередь после заданной начальной задержки, а затем с заданной задержкой между прекращением одного выполнения и началом следующего.

12

void setContinueExistingPeriodicTasksAfterShutdownPolicy (логическое значение)

Устанавливает политику относительно продолжения выполнения существующих периодических задач, даже если этот исполнитель был выключен.

13

void setExecuteExistingDelayedTasksAfterShutdownPolicy (логическое значение)

Устанавливает политику для выполнения существующих отложенных задач, даже когда этот исполнитель был выключен.

14

void setRemoveOnCancelPolicy (логическое значение)

Устанавливает политику относительно того, должны ли отмененные задачи быть немедленно удалены из рабочей очереди во время отмены.

15

отключение пустоты ()

Инициирует упорядоченное завершение, при котором выполняются ранее отправленные задачи, но новые задачи не принимаются.

16

List <Runnable> shutdownNow ()

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

17

<T> Future <T> submit (Callable <T> задача)

Передает задачу, возвращающую значение, для выполнения и возвращает Future, представляющий ожидающие результаты задачи.

18

Future <?> Submit (Выполняемая задача)

Передает задачу Runnable для выполнения и возвращает Future, представляющий эту задачу.

19

<T> Future <T> submit (Выполненная задача, T результат)

Передает задачу Runnable для выполнения и возвращает Future, представляющий эту задачу.

защищенный <V> RunnableScheduledFuture <V> decorateTask (Callable <V> callable, RunnableScheduledFuture <V> задача)

Изменяет или заменяет задачу, используемую для выполнения вызова.

защищенный <V> RunnableScheduledFuture <V> decorateTask (Runnable runnable, задача RunnableScheduledFuture <V>)

Изменяет или заменяет задачу, используемую для выполнения работоспособного объекта.

void execute (команда Runnable)

Выполняет команду с нулевой задержкой.

boolean getContinueExistingPeriodicTasksAfterShutdownPolicy ()

Получает политику о том, продолжать ли выполнение существующих периодических задач, даже если этот исполнитель был выключен.

boolean getExecuteExistingDelayedTasksAfterShutdownPolicy ()

Получает политику о том, выполнять ли существующие отложенные задачи, даже если этот исполнитель был выключен.

BlockingQueue <Runnable> getQueue ()

Возвращает очередь задач, использованную этим исполнителем.

логическое значение getRemoveOnCancelPolicy ()

Получает политику о том, следует ли немедленно удалять отмененные задачи из рабочей очереди во время отмены.

Расписание <V> ScheduledFuture <V> (вызываемое <V>, длительная задержка, единица времени)

Создает и выполняет ScheduledFuture, которое становится активным после заданной задержки.

ScheduledFuture <?> Schedule (команда Runnable, длительная задержка, единица времени)

Создает и выполняет одноразовое действие, которое становится активным после заданной задержки.

ScheduledFuture <?> ScheduleAtFixedRate (команда Runnable, длинный initialDelay, длительный период, единица времени)

Создает и выполняет периодическое действие, которое становится активным сначала после заданной начальной задержки, а затем с заданным периодом; то есть выполнение начнется после initialDelay, затем initialDelay + period, затем initialDelay + 2 * period и так далее.

ScheduledFuture <?> ScheduleWithFixedDelay (команда Runnable, long initialDelay, длинная задержка, единица времени)

Создает и выполняет периодическое действие, которое становится активным в первую очередь после заданной начальной задержки, а затем с заданной задержкой между прекращением одного выполнения и началом следующего.

void setContinueExistingPeriodicTasksAfterShutdownPolicy (логическое значение)

Устанавливает политику относительно продолжения выполнения существующих периодических задач, даже если этот исполнитель был выключен.

void setExecuteExistingDelayedTasksAfterShutdownPolicy (логическое значение)

Устанавливает политику для выполнения существующих отложенных задач, даже когда этот исполнитель был выключен.

void setRemoveOnCancelPolicy (логическое значение)

Устанавливает политику относительно того, должны ли отмененные задачи быть немедленно удалены из рабочей очереди во время отмены.

отключение пустоты ()

Инициирует упорядоченное завершение, при котором выполняются ранее отправленные задачи, но новые задачи не принимаются.

List <Runnable> shutdownNow ()

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

<T> Future <T> submit (Callable <T> задача)

Передает задачу, возвращающую значение, для выполнения и возвращает Future, представляющий ожидающие результаты задачи.

Future <?> Submit (Выполняемая задача)

Передает задачу Runnable для выполнения и возвращает Future, представляющий эту задачу.

<T> Future <T> submit (Выполненная задача, T результат)

Передает задачу Runnable для выполнения и возвращает Future, представляющий эту задачу.

пример

Следующая программа TestThread показывает использование интерфейса ScheduledThreadPoolExecutor в среде, основанной на потоках.

Live Demo

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;

public class TestThread {

   public static void main(final String[] arguments) throws InterruptedException {
      final ScheduledThreadPoolExecutor scheduler = 
         (ScheduledThreadPoolExecutor)Executors.newScheduledThreadPool(1);

      final ScheduledFuture<?> beepHandler = 
         scheduler.scheduleAtFixedRate(new BeepTask(), 2, 2, TimeUnit.SECONDS);

      scheduler.schedule(new Runnable() {

         @Override
         public void run() {
            beepHandler.cancel(true);
            scheduler.shutdown();			
         }
      }, 10, TimeUnit.SECONDS);
   }  

   static class BeepTask implements Runnable {
      
      public void run() {
         System.out.println("beep");      
      }
   }
}

Это даст следующий результат.