在我的场景中,我需要安排一系列任务。例如任务a,b和c应该从1点钟开始运行,但是按顺序插入它们。任务a应该从1点开始,任务b应该在任务a完成后开始,无论何时可能。任务c也仅在任务b完成后启动。
我希望弹簧Taskscheduler可以只安排一个可运行的列表,但我只能在Runnable上安排:
taskScheduler.schedule(task, cronTrigger()));
我该怎么做:
taskScheduler.schedule(taskList, cronTrigger()));
有什么想法吗?
答案 0 :(得分:3)
合理的方法可能是创建运行Runnables列表的Runnable的基本实现,然后将其安排为您的任务,例如:
public class RunnableList implements Runnable {
private final List<Runnable> delegates;
public RunnableList(List<Runnable> delegates) {
this.delegates = new ArrayList<Runnable>(delegates);
}
@Override
public void run() {
for (Runnable job : delegates) {
job.run();
}
}
}
答案 1 :(得分:0)
如果使用只有1个线程的ExecutorService,则可以在Callables列表中使用invokeAll。 Executor的设计方式以及由于只有一个Thread来处理这些任务,这些任务将按给定的顺序处理。
如果必须使用Runnables,则需要以正确的顺序循环添加它们。