Отмена запланированного исполнителя

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

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

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

Спасибо.


person DD.    schedule 24.08.2011    source источник


Ответы (2)


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

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() и отмена()

person Tobi    schedule 25.08.2011