ScheduledExecutorService,以不同的时间间隔安排不同的任务

时间:2013-01-09 10:23:09

标签: java threadpool scheduledexecutorservice

我想要有两个任务--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);
当我安排另一个时,

是否会覆盖计划任务?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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