Java Timer - Funzioni chiamati non completato!
-
19-09-2019 - |
Domanda
Così ho un TimerTask task
chiamare una funzione onTimerComplete()
nella sua run()
onTimerComplete()
simile a questa:
private void onTimerComplete(){
myFunc1();
myFunc2();
}
faccio un Timer t
ed io programmo il TimerTask
con t.schedule(task, 2000);
Il problema è che quando il timer è alto e l'attività viene eseguita la mia onTimerComplete()
ma tale funzione non termina. Si corre myFunc1()
ma non finisce mai è né mai chiama myFunc2()
Tuttavia, se chiamo direttamente onTimerComplete()
, tutto funziona.
Qual è il problema qui?
Soluzione
Se myFunc1()
inizia, ma non finisce mai, allora è molto probabile che il problema è in quella funzione.
È necessario essere consapevoli del fatto che questa funzione sarà chiamato in un thread separato. V'è la possibilità che ci sia un qualche tipo di interazioni indesiderate tra due thread. ( Descrizione qui .)
Se myFunc1()
utilizza alcune variabili che vengono utilizzate anche in altre attività concorrenti, potrebbe essere necessario sincronizzare le parti del codice. Il concorrenza esercitazione potrebbe aiutare a capire ciò che il problema è, e come risolvere il problema.