2

我想要两个任务 - HandlerA 和 HandlerB 分别每 10 秒和每 20 秒执行一次。如果此解决方案是错误的,那么实现此目标的最佳方法是什么?

ScheduledExecutorService stp = Executors.newScheduledThreadPool(8);
stp.scheduleAtFixedRate(new HandlerA(), 0, 10, TimeUnit.SECONDS);
stp.scheduleAtFixedRate(new HandlerB(), 0, 20, TimeUnit.SECONDS);

当我安排另一个任务时,是否会覆盖计划任务?

4

2 回答 2

3

你的解决方案是正确的。您正在安排 2 个单独的任务。您的 ScheduledThreadPoolExecutor 的核心池大小 = 8,这足以并行执行 2 个计划任务。

于 2013-01-09T10:37:28.947 回答
1

你为什么要问?那个解决方案很好。每次调用都会scheduleAtFixedRate启动一个单独的调度程序,即添加HandlerA两次使用两个独立的调度程序运行它。

于 2013-01-09T10:26:08.137 回答