Java-таймеры — вызываемые функции не завершаются!

StackOverflow https://stackoverflow.com/questions/2437008

  •  19-09-2019
  •  | 
  •  

Вопрос

Итак, у меня есть TimerTask task вызов функции onTimerComplete() в своем run()

onTimerComplete() выглядит примерно так:

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

Я делаю Timer t и я планирую TimerTask с t.schedule(task, 2000);

Проблема в том, что когда таймер сработал и задача запускается, onTimerComplete() но эта функция не завершается.Он работает myFunc1() но никогда не заканчивает и не звонит myFunc2()

Однако, если я позвоню onTimerComplete() напрямую все работает.

В чем здесь дело?

Это было полезно?

Решение

Если myFunc1() запускается, но не завершается, то скорее всего проблема именно в этой функции.

Вы должны знать, что эта функция будет вызываться в отдельном потоке.Существует вероятность того, что между двумя потоками происходит какое-то нежелательное взаимодействие.(Описание здесь.)

Если myFunc1() использует некоторые переменные, которые также используются в других параллельных действиях, вам может потребоваться синхронизировать части вашего кода.А руководство по параллелизму может помочь вам понять, в чем проблема и как ее исправить.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top