【发布时间】:2017-11-23 13:42:10
【问题描述】:
我有一堆工作线程,我想在给定延迟后按顺序执行。我想实现以下行为:
延迟 -> 工人 1 -> 延迟 -> 工人 2 - 延迟 -> 工人 3 -> ...
我想出了这个解决方案:
long delay = 5;
for(String value : values) {
WorkerThread workerThread = new WorkerThread(value);
executorService.schedule(workerThread, delay, TimeUnit.SECONDS);
delay = delay + 5;
}
executorService 的创建位置如下:
private final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
还有没有其他方法可以在 Java 中使用 ExecutorService 来实现这一点?
【问题讨论】:
-
您可以有一个工作线程,它每
delay秒执行一次,并从队列中获取value进行处理。 -
您当前的解决方案相对于调度的开始延迟了每个工人的开始,而您的问题布局建议在一名工人完成与您下一次开始之间存在固定延迟。你能澄清一下你真正想要的吗?
-
@bowmore 我的目标是模拟状态机。所以,我会在工作人员和下一次开始之间有一个固定的延迟。
标签: java multithreading executorservice