0

所以我有一个TimerTask task调用onTimerComplete()它的函数run()

onTimerComplete()看起来像这样:

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

我做了一个Timer t,我安排TimerTaskt.schedule(task, 2000);

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

但是,如果我onTimerComplete()直接打电话,一切正常。

这是怎么回事?

4

1 回答 1

2

如果myFunc1()开始但从未完成,那么问题很可能出在该函数中。

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

如果myFunc1()使用其他并发活动中也使用的一些变量,您可能需要同步部分代码。并发教程可能会帮助您找出问题所在以及如何解决它。

于 2010-03-13T02:58:01.907 回答