У меня есть работающий поток MyDesiredRunnable
, который имеет следующий запуск:
public void run() {
try {
this.process();
} catch (InterruptedException e) {
isAlive.set(false);
}
}
isAlive
является AtomicBoolean
.
Планировщик:
// Class definition bla bla bla
private final ExecutorService exth = Executors.newSingleThreadExecutor();
public void schedule() {
Runnable r = new MyDesiredRunnable();
Runnable sdt = ()->{MyDesiredRunnable.isAlive.set(false);};
Runtime.getRuntime().addShutdownHook(new Thread(sdt));
this.exth.execute(r);
}
Этот планировщик всегда будет только одним экземпляром. У меня такой вопрос: «Имеет ли значение, если я добавлю хук выключения перед вызовом execute
. Все, что я могу понять из javadocs, это то, что хук выключения не будет решен до тех пор, пока не будет дано команду shutodown JVM. Кроме того, команда execute
также кажется, ничего не говорит против перехвата завершения до / после. Просто в нескольких ExecutorService
примерах SO или даже в некоторых книгах регистрация выключения происходит после того, как мы вызываем execute. Поэтому я просто хотел узнать, есть ли это «улов», который я не понимаю.
Спасибо