我想要有两个任务--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);
当我安排另一个时,是否会覆盖计划任务?
答案 0 :(得分:2)
您的解决方案是正确的。您正在安排2个单独的任务。您的ScheduledThreadPoolExecutor的核心池大小= 8,这足以并行执行2个计划任务。
答案 1 :(得分:1)
你为什么这么问?那解决方案很好。每次调用scheduleAtFixedRate
都会启动一个单独的调度程序,即添加HandlerA
两次运行它与两个独立的调度程序。