所以我有一个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可以帮助您确定问题所在以及解决方法。