Отмена запланированного исполнителя - PullRequest
5 голосов
/ 24 августа 2011

В настоящее время у меня есть запланированный исполнитель, который отправляет сообщение с такой задержкой:

        executor.schedule(new Runnable() {
            public void run() {
                emitter.emit( message );
            }
        }, delay, TimeUnit.MILLISECONDS);

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

Спасибо.

Ответы [ 2 ]

9 голосов
/ 25 августа 2011

Это можно сделать, используя возвращаемое значение

ScheduledFuture<?> future = executor.schedule(new Runnable() {
      public void run() {
         emitter.emit( message );
     }
    }, delay, TimeUnit.MILLISECONDS);
future.cancel(true);  //true if task should be interrupted

или используя метод shutdown () исполнителя.
Взгляните на shutdown ()и отмена ()

1 голос
/ 24 августа 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...