码迷,mamicode.com
首页 > 其他好文 > 详细

Timer和时间调度

时间:2018-02-06 01:10:12      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:long   原理   任务队列   操作   合作   维护   time()   简单   轮询   

  Timer作为JDK提供的util工具,不太适合作为周期调度任务,只适合简单的定时操作(按照一定时间频率出发任务),在java的领域解决方案中,Quartz无疑是翘楚。

  Timer的调度方法有:

public void schedule(TimerTask task, long delay) {
if (delay < 0)
throw new IllegalArgumentException("Negative delay.");
sched(task, System.currentTimeMillis()+delay, 0);
}  
public void schedule(TimerTask task, Date time) {
sched(task, time.getTime(), 0);
}
  
  等一些主要以时间间隔为主的任务,另外大家不要误会第二个构造方法有什么特别,其实内部也是通过计算出和现在的间隔毫秒数为主的调度,用到的原理也很简单,维护一个queue的实现了TimerTask的任务队列,然后通过轮询mainloop方法,不断执行其中的任务,而执行方式熟悉并发的同学都知道,用的是Object的wait(long millionseconds)方法。

  因此结论:不要试图更改系统时间接近Date time这个时间使得任务运行。

Timer和时间调度

标签:long   原理   任务队列   操作   合作   维护   time()   简单   轮询   

原文地址:https://www.cnblogs.com/iCanhua/p/8419912.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!