Código de portabilidade do uso de temporizadores para o serviço de executores agendados
Estou tentando portar código usando java timers para usar scheduleexecutorservice
Tenho o seguinte caso de uso
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;
}
}
}
Devo substituir as instâncias de timer na classe A e classe B por ScheduledExecutorService e transformar a classe ATimerTask e BTimerTask em uma classe Runnable, por exemplo,
class B {
public boolean execute() {
try {
final ScheduledExecutorService scheduler =
Executors.newScheduledThreadPool(1);
scheduler.scheduleWithFixedDelay (new BRunnnableTask(), period, delay);
} catch (Exception e) {
return false;
}
}
}
Está correto.
EDIT: Uma das principais motivações da portabilidade é que as exceções de tempo de execução lançadas no TimerTask matam esse segmento e ele não pode ser agendado mais. Eu quero evitar o caso, para que, mesmo que eu tenha uma exceção de tempo de execução, o thread continue executando e não par