Java常用类库之定时调度
在实际项目开发之中,由于某些原因经常有可能要执行一些自动的处理操作,例如:多线程里的守护线程,这个守护线程可能每3秒执行一次,或者说这个守护线程每10秒执行一个数据的清理操作,但是传统的守护线程的调用都需要主线程的存在,那么假设说要求你编写一个程序,这个程序除了满足有实际的功能开发要求之外,还应该可以提供有一些辅助性的做法,并且不太希望涉及到一些繁琐的守护线程的处理,就可以通过定时调度的模式来解决。也就是说除了那种守护线程可以实现一些后台定时的处理之外,也可以通过定时调度的方式来完成,这就是定时调度的意义所在。而为什么电脑能够实现定时调度呢,很简单,因为我们电脑内部有个时钟发生器,依靠这个时钟就可以解决整个调度问题了。如果要想在Java里面实现这种定时调度,那么就需要两个重要的程序结构类(这两个结构都是在java.util包中提供):
-
TimeTask接口:实现定时处理任务的接口定义。
序号 方法名称 描述 1 public void schedule(TimerTask task,long delay) 设置延迟多少毫秒之后执行定时任务 2 public void schedule(TimerTask task,long delay,long period) 设置延迟多少毫秒之后执行定时任务,同时定义间隔调度的时间 3 public void schedule(TimerTask task,Date time) 达到指定的日期时间进行调度 -
Timer类:实现线程任务调度。
范例: 实现间隔调度
class TaskThread extends TimerTask{ //实现定时任务
@Override
public void run() { //所有的定时任务都通过线程描述
System.out.println("【定时任务调用】www.yootk.com");
}
}
public class TimerDemo {
public static void main(String[] args) {
Timer timer = new Timer();//调度类
//1秒之后开始调度,执行一次,每2秒重复调用一次
timer.schedule(new TaskThread(),1000,2000);
}
}
执行结果:
【定时任务调用】www.yootk.com
【定时任务调用】www.yootk.com
【定时任务调用】www.yootk.com
【定时任务调用】www.yootk.com
这种定时调度的机制属于Java原生的支持功能,相比较使用后台线程的模式完成,通过这种机制看起来会更加的简单,而且控制也非常的方便。
定时调度跟后台线程的区别就是整个结构看起来它是一个独立的线程并且好控制间隔的调度时间。