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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top