Java计时器 - 被称为未完成的函数!

时间:2010-03-13 02:14:11

标签: java android android-asynctask

所以我TimerTask task在其onTimerComplete()

中调用了一个函数run()

onTimerComplete()看起来像这样:

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

我制作了Timer t,并使用TimerTask

安排t.schedule(task, 2000);

问题是,当计时器启动且任务运行onTimerComplete()但该功能未完成时。它运行myFunc1()但从未完成,也不会调用myFunc2()

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

这里的交易是什么?

1 个答案:

答案 0 :(得分:2)

如果myFunc1()开始,但永远不会结束,那么问题很可能出在该函数中。

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

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