планирование выполнимых задач в Java

Я - развитие интересный вопрос на так на использовании ScheduledThreadPoolExecutor для некоторой повторяющейся задачи.

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

Одной вещью отметить вот является сама задача, полностью отделяется из расписания-

ScheduledExecutorService executor = new ScheduledThreadPoolExecutor(1);
ScheduledFuture nextSchedule = 
    executor.schedule(task, 60000, TimeUnit.MILLISECONDS);

где -

SomeTask task = new SomeTask();

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

Спасибо

8
задан Community 23 May 2017 в 11:55
поделиться

2 ответа

В

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

// (Need to make variable final *if* it is a local (method) variable.)
final ScheduledExecutorService execService = Executors.newSingleThreadScheduledExecutor();

// Create re-usable Callable.  In cases where the Callable has state
// we may need to create a new instance each time depending on requirements.
Callable<Void> task = new Callable() {
  public Void call() {
    try {
      doSomeProcessing();
    } finally {
      // Schedule same task to run again (even if processing fails).
      execService.schedule(this, 1, TimeUnit.SECONDS);
    }
  }
}
7
ответ дан 5 December 2019 в 15:23
поделиться

проходят исполнителя для задачи, чтобы он мог сделать манипуляцию с ним:

SomeTask task = new SomeTask(executor);
4
ответ дан 5 December 2019 в 15:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: