Pessoal, tenho o seguinte trecho de código:
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
foo();
}
}, 0, 60000);
Ou seja, de minuto em minuto preciso executar o método foo. Porém as vezes o método foo demora um pouco pra fazer seu trabalho.
Mas de acordo com a documentação:
Logo, as vezes se o método demorar, ele vai atrasar as próximas execuções e depois quando liberar, vai sair executando todas que ficaram atrasadas, certo?
Então pensei na seguinte solução:
...
// Variável global
boolean bloqueio = false;
...
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
if (bloqueio == false) {
foo();
}
}
}, 0, 60000);
}
...
void foo() {
bloqueio = true;
// operações...
bloqueio = false;
}
O que acham?