scheduleAtFixedRate执行速度很快

时间:2013-02-11 18:24:50

标签: java android timer

我在我的程序中使用方法scheduleAtFixedRate(Timer类)。它每隔一秒运行一次,但有时这种方法变得非常快(它每秒执行3-4次)。

然而,我在网上做了一些研究,我发现了这个:

从Android开发者的页面复制:

  

使用固定费率执行时,将安排每次连续运行任务的开始时间,而不考虑上次运行的时间。如果延迟阻止计时器按时启动任务,这可能会导致一系列的聚合运行(一个紧接着一个启动)。

我需要固定计时器。它应该只运行每x时一次而不执行任何快速执行。是否有scheduleAtFixedRate方法的替代方法,或者我需要对此方法感到满意吗?

2 个答案:

答案 0 :(得分:1)

可以考虑Timer类中的方法调度,即使它不能保证任务每次执行一次x'一段时间。

public void schedule(TimerTask task, Date firstTime,  long period)

至少不会像你说的那样重复执行。

答案 1 :(得分:0)

如果您的任务运行时间超过1秒,您可以使用ScheduledExecutorService尝试使用多个线程。

语法与Timer非常相似,但它是一个更健壮,更灵活的API。