欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

schedule() 和 scheduleAtFixedRate() 的区别--转载

发布时间:2025/4/5 编程问答 46 豆豆
生活随笔 收集整理的这篇文章主要介绍了 schedule() 和 scheduleAtFixedRate() 的区别--转载 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1.  schedule() ,2个参数方法:
在执行任务时,如果指定的计划执行时间scheduledExecutionTime <= systemCurrentTime,则task会被立即执行。

2.  schedule() ,3个参数方法:
在执行任务时,如果指定的计划执行时间scheduledExecutionTime <= systemCurrentTime,则task会被立即执行,之后按period参数固定重复执行。

3.  scheduleAtFixedRate() ,3个参数方法:
在执行任务时,如果指定的计划执行时间scheduledExecutionTime<= systemCurrentTime,则task会首先按执行一次;然后按照执行时间、系统当前时间和period参数计算出过期该执行的次数,计算按照: (systemCurrentTime-scheduledExecutionTime)/period,再次执行计算出的次数;最后按period参数固定重复执行。

4.  schedule() 和scheduleAtFixedRate() 
schedule()方法更注重保持间隔时间的稳定。
scheduleAtFixedRate()方法更注重保持执行频率的稳定。

package com.task;import java.util.Date; import java.util.Timer;public class TestTask {/*** @param args*/public static void main(String[] args){Date crtTime = new Date();long crt = crtTime.getTime();Timer timer = new Timer();// 在指定时间执行CommonTask task1 = new CommonTask("【任务一】"); timer.schedule(task1, new Date(crt - 1000));// schedule和scheduleAtFixedRate CommonTask task11 = new CommonTask("【任务二】"); timer.schedule(task11, new Date(crt - 10 * 1000),1000);CommonTask task12 = new CommonTask("【任务三】"); timer.schedule(task12, new Date(crt - 10 * 1000),1000);// schedule和scheduleAtFixedRate CommonTask task13 = new CommonTask("【任务四】"); timer.schedule(task13, new Date(crt + 2 * 1000),1000);CommonTask task14 = new CommonTask("【任务五】"); timer.scheduleAtFixedRate(task14, new Date(crt + 2 * 1000),1000);}}

原文地址:http://blog.163.com/nice_2012/blog/static/192666148201231635332934/

 

转载于:https://www.cnblogs.com/davidwang456/p/4290732.html

《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读

总结

以上是生活随笔为你收集整理的schedule() 和 scheduleAtFixedRate() 的区别--转载的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。