1

在我的场景中,我需要安排一系列任务。例如,任务 a、b 和 c 应该在 1 点开始运行,但按照我插入它们的顺序。任务 a 应该在 1 点开始,任务 b 应该在任务 a 完成后开始,无论何时。任务 c 也仅在任务 b 完成后才开始。

我本来希望 springs Taskscheduler 可以安排一个可运行的列表,但我只能安排在 Runnable 上:

taskScheduler.schedule(task, cronTrigger()));

我该怎么做这样的事情:

taskScheduler.schedule(taskList, cronTrigger()));

任何想法?

4

2 回答 2

3

一种合理的方法可能是创建一个运行 Runnable 列表的 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();
        }
    }
}
于 2013-11-09T16:09:24.160 回答
0

如果您使用只有 1 个线程的 ExecutorService,则可以在 Callables 列表上使用invokeAll。Executor 的设计方式以及由于只有一个线程来处理这些任务,因此这些任务将按照给定的顺序进行处理。

如果必须使用 Runnables,则需要以正确的顺序循环添加它们。

于 2013-11-09T16:58:14.517 回答