Java Timers - Funções chamadas não completar!
-
19-09-2019 - |
Pergunta
Então, eu tenho um TimerTask task
chamar uma função onTimerComplete()
em sua run()
onTimerComplete()
é algo como isto:
private void onTimerComplete(){
myFunc1();
myFunc2();
}
Eu faço um Timer t
e eu agendar a TimerTask
com t.schedule(task, 2000);
O problema é que, quando o temporizador é para cima e a tarefa é executada minha onTimerComplete()
mas essa função não termina. Corre-se myFunc1()
mas nunca termina-lo nem sempre chamar myFunc2()
No entanto, se eu chamar onTimerComplete()
diretamente, tudo funciona.
Qual é o problema aqui?
Solução
Se começa myFunc1()
, mas nunca termina, então é mais provável que o problema está em que a função.
Você precisa estar ciente de que esta função será chamado em um segmento separado. Existe a possibilidade de que haja algum tipo de interação indesejada entre dois threads. ( Descrição aqui .)
Se myFunc1()
usa algumas variáveis ??que também são usados ??em outras atividades simultâneas, você pode precisar de peças Sincronizar de seu código. A concorrência tutorial pode ajudá-lo a descobrir o que a problema é, e como corrigi-lo.