美文网首页
fixedDelay 和 fixedRate的区别

fixedDelay 和 fixedRate的区别

作者: ivms8200 | 来源:发表于2023-04-02 16:19 被阅读0次

在Spring Boot中,@Scheduled注解可以用来创建定时任务。在@Scheduled注解中,有两个比较常用的属性:fixedDelay和fixedRate,它们都可以用来设置定时任务的执行时间间隔。

fixedDelay:表示上一个任务执行结束后隔一段时间再开始下一次任务。即当任务执行完毕后,会等待一段时间,然后再执行下一次任务。如果上一个任务执行的时间很长,那么下一个任务会延迟执行。
fixedRate:表示以固定的频率执行任务。即无论上一个任务执行的时间长短,下一次任务都会在固定的时间间隔后开始执行。如果上一个任务执行的时间很长,那么下一个任务也会按照固定的时间间隔开始执行,可能会导致并发执行多个任务。
因此,fixedDelay适合任务执行时间较长的场景,而fixedRate适合任务执行时间较短的场景。

下面是两者使用的示例:

@Component
public class ScheduleTask {
    // fixedDelay方式
    @Scheduled(fixedDelay = 5000)
    public void task1() {
        System.out.println("task1每隔5秒执行一次");
    }

    // fixedRate方式
    @Scheduled(fixedRate = 5000)
    public void task2() {
        System.out.println("task2每隔5秒执行一次");
    }
}

在上面的代码中,task1和task2都是每隔5秒执行一次。但是,如果task1的执行时间超过5秒,那么下一个任务就会在上一个任务结束后等待一段时间再开始执行;而task2无论上一个任务执行的时间长短,下一次任务都是在固定的时间间隔后开始执行。

相关文章

网友评论

      本文标题:fixedDelay 和 fixedRate的区别

      本文链接:https://www.haomeiwen.com/subject/alerddtx.html