Java 如何使任务x在计划任务y之后运行

Java 如何使任务x在计划任务y之后运行,java,spring,scheduled-tasks,Java,Spring,Scheduled Tasks,在我的场景中,我需要安排一系列任务。e、 g.任务a、b和c应该在1点钟开始运行,但顺序是我插入它们的顺序。任务a应在1点钟开始,任务b应在任务a完成后开始,无论何时。任务c也只有在任务b完成后才开始 我本希望springs Taskscheduler可以安排一个Runnable列表,但我只能安排Runnable: taskScheduler.schedule(task, cronTrigger())); 我怎样才能做这样的事情: taskScheduler.schedule(taskList

在我的场景中,我需要安排一系列任务。e、 g.任务a、b和c应该在1点钟开始运行,但顺序是我插入它们的顺序。任务a应在1点钟开始,任务b应在任务a完成后开始,无论何时。任务c也只有在任务b完成后才开始

我本希望springs Taskscheduler可以安排一个Runnable列表,但我只能安排Runnable:

taskScheduler.schedule(task, cronTrigger()));
我怎样才能做这样的事情:

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

有什么想法吗?

一个合理的方法可能是创建一个运行可运行文件列表的运行可运行文件的基本实现,然后将其作为您的任务安排,例如:

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();
        }
    }
}
公共类RunnableList实现Runnable{
非公开最终代表名单;
公共运行列表(列出代理){
this.delegates=新的阵列列表(delegates);
}
@凌驾
公开募捐{
用于(可运行作业:代理){
job.run();
}
}
}

一种合理的方法可能是创建一个运行可运行文件列表的可运行文件的基本实现,然后将其安排为您的任务,例如:

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();
        }
    }
}
公共类RunnableList实现Runnable{
非公开最终代表名单;
公共运行列表(列出代理){
this.delegates=新的阵列列表(delegates);
}
@凌驾
公开募捐{
用于(可运行作业:代理){
job.run();
}
}
}

一种合理的方法可能是创建一个运行可运行文件列表的可运行文件的基本实现,然后将其安排为您的任务,例如:

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();
        }
    }
}
公共类RunnableList实现Runnable{
非公开最终代表名单;
公共运行列表(列出代理){
this.delegates=新的阵列列表(delegates);
}
@凌驾
公开募捐{
用于(可运行作业:代理){
job.run();
}
}
}

一种合理的方法可能是创建一个运行可运行文件列表的可运行文件的基本实现,然后将其安排为您的任务,例如:

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();
        }
    }
}
公共类RunnableList实现Runnable{
非公开最终代表名单;
公共运行列表(列出代理){
this.delegates=新的阵列列表(delegates);
}
@凌驾
公开募捐{
用于(可运行作业:代理){
job.run();
}
}
}

如果只使用1个线程的ExecutorService,则可以在可调用列表中使用。执行器的设计方式,由于只有一个线程来处理这些任务,这些任务将按给定的顺序处理


如果必须使用可运行程序,则需要按正确的顺序循环添加它们。

如果使用只有1个线程的ExecutorService,则可以在可调用程序列表上使用。执行器的设计方式,由于只有一个线程来处理这些任务,这些任务将按给定的顺序处理


如果必须使用可运行程序,则需要按正确的顺序循环添加它们。

如果使用只有1个线程的ExecutorService,则可以在可调用程序列表上使用。执行器的设计方式,由于只有一个线程来处理这些任务,这些任务将按给定的顺序处理


如果必须使用可运行程序,则需要按正确的顺序循环添加它们。

如果使用只有1个线程的ExecutorService,则可以在可调用程序列表上使用。执行器的设计方式,由于只有一个线程来处理这些任务,这些任务将按给定的顺序处理


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

这些可能有帮助这些可能有帮助这些可能有帮助这似乎是一个解决方案,但是job2会等到job1完成,还是我必须让它们显式等待?如果是这样,你会怎么做?@user817795这将运行可运行列表中的第一项以完成,然后是下一项,正如你的问题中所述。这似乎是一个解决方案,但job2会等到job1完成,还是我必须让他们显式地等待?如果是这样,你会怎么做?@user817795这将运行可运行列表中的第一项以完成,然后是下一项,正如你的问题中所述。这似乎是一个解决方案,但job2会等到job1完成,还是我必须让他们显式地等待?如果是这样,你会怎么做?@user817795这将运行可运行列表中的第一项以完成,然后是下一项,正如你的问题中所述。这似乎是一个解决方案,但job2会等到job1完成,还是我必须让他们显式地等待?如果是这样的话,你会怎么做?@user817795这将运行可运行列表中的第一项直到完成,然后是下一项,正如你在问题中所描述的那样。