2013-01-09 76 views
1

我想要有两个任务 - HandlerA和HandlerB分别每10秒和每20秒执行一次。 如果这种解决方案是错误的,那么实现这一目标的最佳方法是什么?ScheduledExecutorService,以不同的时间间隔安排不同的任务

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

是计划中的任务覆盖,当我安排另一个?

+5

当你尝试时会发生什么? – dty

+0

只执行第一个任务。我承认我的示例代码不适合测试目的。正如我发现的那样,第一项任务默默地失败了,因此没有重新安排。 –

回答

2

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

1

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

相关问题