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

onTimerComplete()看起来像这样:

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

我作出Timer t和我安排与TimerTaskt.schedule(task, 2000);

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

不过,如果我直接调用onTimerComplete(),一切正常。

这是怎么回事吗?

有帮助吗?

解决方案

如果myFunc1()开始,但从来没有完成,那么它是最有可能的是,问题是该功能。

您需要知道,这个功能将在一个单独的线程调用。有是有某种两个线程之间不必要的相互作用的可能性。 (说明此处。)

如果myFunc1()使用一些变量也存在于其它并发的活动中,您可能需要同步您的部分代码。该并发教程可能会帮助你的工作是什么问题是,如何解决它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top