【问题标题】:How to Schedule a scheduler to run at multiple time intervals如何安排调度程序以多个时间间隔运行
【发布时间】:2020-12-22 13:13:59
【问题描述】:

我有一个每五分钟运行一次的调度程序。我也想每 1 小时运行一次这个调度程序。我希望同一个调度程序定期在两个不同的时间运行。

 ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(1);
        scheduledThreadPool.scheduleAtFixedRate(new Runnable() {
            public void run() 
              {
              }, 0, 5, TimeUnit.MINUTES);

我是这样写的,每 5 分钟运行一次。现在我希望同样的调度程序也每 1 小时运行一次。

【问题讨论】:

  • 60/5 = 12 您的调度程序将每小时运行一次。
  • 是的,我想每隔 1 小时再运行一次以进行清理
  • 它已经每小时运行一次,因为它每 5 分钟运行一次。除非你想每小时运行不同的东西?

标签: java scheduling executorservice


【解决方案1】:

每五分钟运行一次任务意味着您的任务也每小时运行一次。运行 12 次后,将经过一个小时。所以每十二次运行相隔一个小时。 12 * 5 分钟 = 60 分钟 = 1 小时。

如果您有一个不同任务要每小时运行一次,请在您的ScheduledExecutorService 对象上再次调用scheduledAt… 方法。

Runnable runnableA = new Runnable() { public void run() {…} ; }
Runnable runnableB = new Runnable() { public void run() {…} ; }

ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(1);

scheduledThreadPool.scheduleAtFixedRate( runnableA , 0 , 5 , TimeUnit.MINUTES );
scheduledThreadPool.scheduleAtFixedRate( runnableB , 0 , 1 , TimeUnit.HOURS );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-18
    • 2019-12-23
    • 2017-11-16
    • 1970-01-01
    • 2017-09-06
    • 1970-01-01
    • 2011-04-21
    • 1970-01-01
    相关资源
    最近更新 更多