Timer和时间调度

  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这个时间使得任务运行。
上一篇:shell中定义变量用双引号和单引号以及不用引号的区别


下一篇:Python中最常见括号()、[]、{}的区别