Таймеры Java - Функции, которые называются не завершающими! - PullRequest
0 голосов
/ 13 марта 2010

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

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

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

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

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

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

Что здесь за дело?

1 Ответ

2 голосов
/ 13 марта 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...