【问题标题】:How to execute items in a list one by one at some interval in Java?如何在Java中以某个时间间隔一个一个地执行列表中的项目?
【发布时间】:2025-04-01 23:50:02
【问题描述】:

我有一个物品清单。我想对列表中的每个项目一个一个地运行一些操作。该操作可能需要 5 分钟才能完成。问题是对于列表中的特定项目,操作应该开始并完成,然后只有下一个项目的操作应该开始,依此类推。该操作应仅针对列表中的项目数执行。

这个列表正被多个线程使用。

我正在考虑使用 TimerTask 或 Schedular。

可以帮忙吗?

【问题讨论】:

  • 我不太确定我是否完全理解了这个问题。它是任务列表还是单个任务可以处理的项目列表?如果是后者,那么为什么不将项目列表传递给用于执行任务的任何内容?除了串行执行的要求之外,“在某个时间间隔”在哪里出现?还有“这个列表正被多个线程使用。” - 这与问题有什么关系?这实际上可能是另一回事,即与访问同步或完成有关。

标签: java spring multithreading scheduled-tasks timertask


【解决方案1】:

理想情况下,您应该按顺序执行,因为在这里使用并发没有任何好处。

但是,如果它需要多线程,您可以执行类似 ...

List<Runnable> tasks = new ArrayList<>();
tasks.add(new ThreadOne()); /* Pick better names for tasks */
tasks.add(new ThreadTwo());
...
ExecutorService worker = Executors.newSingleThreadExecutor();
worker.submit(() -> {
    while (!Thread.interrupted()) 
        tasks.forEach(Runnable::run);
});
worker.shutdown();

【讨论】:

    最近更新 更多