当前位置: 首页 > news >正文

南通网络科技的公司网站中国建筑论坛网

南通网络科技的公司网站,中国建筑论坛网,惠州做网站的公司,网站美工如何做在java中,Timer类主要用于定时性、周期性任务 的触发,这个类中有两个方法比较难理解,那就是schedule和scheduleAtFixedRate方法,在这里就用实例分析一下 (1)schedule方法:“fixed-delay”&#…
在java中,Timer类主要用于定时性、周期性任务 的触发,这个类中有两个方法比较难理解,那就是schedule和scheduleAtFixedRate方法,在这里就用实例分析一下

(1)schedule方法:“fixed-delay”;如果第一次执行时间被delay了,随后的执行时间按 照 上一次 实际执行完成的时间点 进行计算
(2)scheduleAtFixedRate方法:“fixed-rate”;如果第一次执行时间被delay了,随后的执行时间按照 上一次开始的 时间点 进行计算,并且为了”catch up”会多次执行任务,TimerTask中的执行体需要考虑同步 
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");  
Date startDate = dateFormatter.parse("2010/11/26 00:20:00");  
Timer timer = new Timer();  
timer.scheduleAtFixedRate(new TimerTask(){  public void run()  {  System.out.println("execute task!" + this.scheduledExecutionTime());  }  
},startDate,3*60*1000);  
 以上的代码,表示在2010-11-26 00:20:00秒开始执行,每3分钟执行一次
假设在2010/11/26 00:27:00执行
以上会打印出3次
execute task!   00:20
execute task!   00:23    catch up
execute task!   00:26    catch up
下一次执行时间是00:29,相对于00:26
当换成schedule方法时,在2010/11/26 00:27:00执行
会打印出1次
execute task!   00:20   无catch up
下一次执行时间为00:30,相对于00:27

以上考虑的都是在你设定的timer开始时间后,程序才被执行

当执行任务的时间大于周期间隔时,会发生什么呢?
(1)schedule方法:下一次执行时间相对于 上一次 实际执行完成的时间点 ,因此执行时间会不断延后
(2)scheduleAtFixedRate方法:下一次执行时间相对于上一次开始的 时间点 ,因此执行时间不会延后,存在并发性 
以下例程序来测试上述结论,TimerTask需要执行6秒钟,但是间隔周期为5秒钟
package test;  
import java.text.ParseException;  
import java.text.SimpleDateFormat;  
import java.util.Date;  
import java.util.Timer;  
import java.util.TimerTask;  
public class Test {  public static void main(String[] args) throws ParseException {  SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");  Date startDate = dateFormatter.parse("2010/11/28 01:06:00");  Timer timer = new Timer();  timer.schedule(new TimerTask(){  public void run() {  try {  Thread.sleep(6000);  } catch (InterruptedException e) {  e.printStackTrace();  }  System.out.println("execute task!"+ this.scheduledExecutionTime());  }  },startDate, 5 * 1000);  }  }  
 schedule方法的执行结果如下:
execute task!1290877560001
execute task!1290877566001
execute task!1290877572001
execute task!1290877578001
execute task!1290877584001
execute task!1290877590001
execute task!1290877596001
execute task!1290877602001
execute task!1290877608001
execute task!1290877614001
execute task!1290877620001
execute task!1290877626001
execute task!1290877632001
execute task!1290877638001
可以看出,间隔时间都为6秒,因此,下一次的执行时间点=上一次程序执行完成的时间点+间隔时间 
当换成scheduleAtFixedRate方法的执行结果如下:
execute task!1290877860000
execute task!1290877865000
execute task!1290877870000
execute task!1290877875000
execute task!1290877880000
execute task!1290877885000
execute task!1290877890000
execute task!1290877895000
execute task!1290877900000
execute task!1290877905000
execute task!1290877910000
execute task!1290877915000
execute task!1290877920000
execute task!1290877925000
execute task!1290877930000
可以看出,间隔时间都为5秒,因此,下一次的执行时间点=上一次程序开始执行的时间点+间隔时间 ;并且因为前一个任务要执行6秒,而当前任务已经开始执行了,因此两个任务间存在重叠,需要考虑线程同步

http://blog.csdn.net/gtuu0123/article/details/6040159 原址
http://www.15wanjia.com/news/160262.html

相关文章:

  • 做网站需要用什么技术安防公司网站建设
  • 龙岗网站优化培训江苏省江建集团有限公司建设网站
  • 重庆开县网站建设公司推荐自己申请网站空间
  • 在哪些软件上建设网站网站制作工资
  • wordpress建站空间推荐学平面设计怎么样啊
  • 怎样向网站上传照片广告公司名字排名
  • 扬州 网站 建设wordpress ugc
  • 阿里巴巴网站建设的态度虚心教育培训网站
  • 新手学做网站 pdf如何建立网站快捷方式到桌面
  • 温州开发网站公司哪家好企业做推广有几种方式
  • 罗湖做网站公司排名网站是由哪些组成
  • 厦门邮件网站五棵松网站建设
  • 建站服务器dw做的静态网站怎么分享链接
  • 泰安定制网站建设公司网页设计需要用到的软件
  • 北京 顺义 网站制作大数据网站开发
  • 哈尔滨网站制作软件电商sem是什么意思
  • wordpress 网站生成app摄影网站设计与制作
  • 高端网站设计有哪些展厅公司
  • 网站产品原型图二次开发收费需要高点
  • 基于php的网站开发流程门店推广是什么意思
  • 成都网站优化方式正规的网站建设专业公司
  • 淘宝网站建设可以申请赔款厦门建设银行网站
  • 成都网站设公司计算机前端
  • 唯品会官网一家做特卖的网站营销型网站的建站步骤是什么意思
  • 学生网站做兼职网站建设公司海南
  • 315晚会 网站建设公司个人视频网站制作
  • 无锡做网站排名雪狼网站系统
  • 免费上外国网站的浏览器如何查看一个网站是什么程序做的
  • 花钱做网站需要所有权淘金企业网站建设服务
  • 视频网站开发文档wordpress取消footer