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

Java ScheduledExecutorService,以不同的时间间隔安排不同的任务,java,threadpool,scheduledexecutorservice,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, 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);

当我计划另一个任务时,计划的任务是否被覆盖?

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

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

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

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

尝试时会发生什么?只执行了第一个任务。我承认我的示例代码不适合用于测试目的。正如我发现的那样,第一个任务只是默默地失败了,因此没有重新安排。当你尝试它时会发生什么?只有第一个任务被执行。我承认我的示例代码不适合用于测试目的。正如我发现的那样,第一个任务只是默默地失败了,因此没有重新安排。