admin管理员组文章数量:1794759
@Schedule中关于fixedDelay和fixedRate的区别
先介绍下Schedule的使用方法 1.首先新建使用Springboot的Maven项目,引入相关引用如下在pom.xml里添加如下:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency> 2.新建MySchedule的Java文件,用@Component来注释该类,定时任务用@Scheduled来注释如下:
@Scheduled(fixedRate=2000) public void fixedRate(){ System.out.println("fixedRate:"+new Date()); }该代码会定时2秒钟执行一次在这里插入代码片,执行结果如下 但是@Scheduled中还有一种属性fixedDelay,两者有什么区别,区别就是如果执行任务中有阻塞的情况,fixedDelay执行间隔会加上阻塞的时间代码如下:
@Scheduled(fixedDelay=2000) public void fixedDelay(){ try { Thread.currentThread().sleep(1000);//毫秒 } catch(Exception e){} System.out.println("fixedDelay:"+new Date()); }执行结果如下 可以看出后一次执行的时间是fixedDelay的时间加阻塞时间; 而fixedRate则是按其规定的时间来执行的,犹如时刻表一般,当阻塞结束后按时刻表来执行,代码如下:
@Scheduled(fixedRate=2000) public void fixedRate(){ try { Thread.currentThread().sleep(1000);//毫秒 } catch(Exception e){} System.out.println("fixedRate:"+new Date()); }执行结果如下 图中可以看到,执行结果中时间间隔为fixedRate定的时间间隔
总结来说,fixedRate下一次执行时间是本次开始时间加间隔时间;而fixedDelay下一次执行时间是本次结束时间加间隔时间
本文标签: 区别schedulefixedDelayfixedRate
版权声明:本文标题:@Schedule中关于fixedDelay和fixedRate的区别 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686479104a72103.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论