0

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

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

从android开发者页面复制:

使用固定速率执行,任务的每次连续运行的开始时间都会被安排,而不考虑上一次运行发生的时间。如果延迟阻止计时器按时启动任务,这可能会导致一系列聚集运行(一个接一个地立即启动)。

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

4

2 回答 2

1

Timer 类中的方法 schedule 可以考虑,即使它不保证任务将在每个“x”时间段执行一次。

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

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

于 2013-02-11T18:36:09.847 回答
0

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

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

于 2013-02-11T18:26:50.403 回答