我创建了两个批处理作业,这两个作业的初始延迟都是20秒。现在我想在这两个工作之间放一些延迟。如果Job1正在运行,则Job2必须等待几秒钟,然后仅在Job1完成后执行。同样,如果Job2正在运行,则Job1必须等待几秒钟,然后仅在Job2完成后执行。
@Component
public class Job1{
@Scheduled(fixedRate = 20000)
public void execute() {
//business logic
}
}
@Component
public class Job2{
@Scheduled(fixedRate = 20000)
public void execute() {
//business logic
}
}
字符串
1条答案
按热度按时间bxpogfeg1#
你可以通过让作业在一个同步方法中运行来实现这种行为,例如,通过引入一个类,这个类有一个方法来执行一个同步方法,即
字符串
一个完整的工作示例,它在不同的@Scheduled-methods中使用这个类:
型
不同的速率和睡眠时间被用来表明工作从来没有重叠。如果你需要你在问题中提到的方法之间的延迟,这可以添加到
run()
-方法中。