Pregunta

Así que tengo una TimerTask task llamar a una función en su onTimerComplete() run()

onTimerComplete() parece algo como esto:

private void onTimerComplete(){
  myFunc1();
  myFunc2();
}

hago un Timer t y programo el TimerTask con t.schedule(task, 2000);

El problema es, cuando el temporizador está en marcha y la tarea se ejecuta mi onTimerComplete() pero esa función no termina. Se ejecuta myFunc1() pero nunca lo termina ni jamás llamar myFunc2()

Sin embargo, si llamo directamente onTimerComplete(), todo funciona.

¿Cuál es el problema aquí?

¿Fue útil?

Solución

Si myFunc1() comienza, pero nunca termina, entonces lo más probable es que el problema está en esa función.

Es necesario tener en cuenta que esta función se llama en un hilo separado. Existe la posibilidad de que exista algún tipo de interacción no deseada entre dos hilos. ( Descripción aquí .)

Si myFunc1() utiliza algunas variables que se utilizan también en otras actividades concurrentes, puede que tenga que sincronizar partes de su código. El concurrencia tutorial podría ayudarle a resolver lo que el problema y cómo solucionarlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top