Если вам действительно нужно использовать его для повторения задач, каждое планирование должно выглядеть примерно так:
аюсь портировать код с использованием Javaтаймеры использоватьscheduledexecutorservice
У меня есть следующий вариант использования
class A {
public boolean execute() {
try {
Timer t = new Timer();
t.schedule (new ATimerTask(), period, delay);
} catch (Exception e) {
return false;
}
}
}
class B {
public boolean execute() {
try {
Timer t = new Timer();
t.schedule (new BTimerTask(), period, delay);
} catch (Exception e) {
return false;
}
}
}
Должен ли я просто заменить экземпляры Timer в классе A и классе B на ScheduledExecutorService и сделать класс ATimerTask и BTimerTask классом Runnable, например,
class B {
public boolean execute() {
try {
final ScheduledExecutorService scheduler =
Executors.newScheduledThreadPool(1);
scheduler.scheduleWithFixedDelay (new BRunnnableTask(), period, delay);
} catch (Exception e) {
return false;
}
}
}
Это верно.
РЕДАКТИРОВАТЬ: Одна из основных причин портирования заключается в том, что исключения во время выполнения, генерируемые в TimerTask, убивают этот поток и его нельзя запланировать дальше. Я хочу избежать этого случая, так что даже если у меня есть исключение времени выполнения, поток должен продолжать выполняться, а не останавливаться.