【问题标题】:Using ScheduledExecutorService method to run a batch of tasks periodically使用 ScheduledExecutorService 方法定期运行一批任务
【发布时间】:2018-03-04 06:29:17
【问题描述】:

我想一次提交一批任务并定期执行它们。使用ExecutorService 对象和invokeall 方法可以一次运行任务。但是尝试使用scheduleAtFixedRate,不兼容:

executor.scheduleAtFixedRate(executor.invokeAll(callables), initialDelay, period, TimeUnit.SECONDS );

如何一次并定期执行一批任务?

【问题讨论】:

    标签: java multithreading executorservice scheduledexecutorservice


    【解决方案1】:

    没有像 invokeall 这样的东西,但是通过您的可运行文件循环并没有错,因为实际上也没有像“立即”这样的东西:

    ScheduledExecutorService pool = Executors.newScheduledThreadPool(10);
    for (int i = 0; i < 10; i++) {
        pool.scheduleAtFixedRate(() -> {
            // do some work
        }, 0, 10, TimeUnit.SECONDS);
    }
    

    或者如果你有Runnable的集合:

    ScheduledExecutorService pool = Executors.newScheduledThreadPool(runnables.size());
    runnables.forEach((r) -> pool.scheduleAtFixedRate(r, 0, 10, TimeUnit.SECONDS));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-18
      • 1970-01-01
      • 2013-12-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多