所以我有一个TimerTask task在其onTimerComplete()中调用函数run()

onTimerComplete()看起来像这样:

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


我创建一个Timer t,并在TimerTask中安排t.schedule(task, 2000);

问题是,当计时器计时到并且任务运行我的onTimerComplete()时,该功能没有完成。它运行myFunc1()但从未完成,也从未调用myFunc2()

但是,如果我直接致电onTimerComplete(),一切都会正常。

怎么了

最佳答案

如果myFunc1()开始但从未结束,则问题很可能出在该函数中。

您需要注意,此函数将在单独的线程中调用。两个线程之间可能存在某种不需要的交互。 (Description here。)

如果myFunc1()使用在其他并发活动中也使用的某些变量,则可能需要同步部分代码。 concurrency tutorial可以帮助您确定问题所在以及解决方法。

08-06 08:13