JAVA定时调度工具详细解析

来源:互联网 发布:大数据机房建设 编辑:程序博客网 时间:2024/06/03 16:53

在JAVA中定时调度的工具包括有:Timer和Quartz

Timer和Quartz的区别

1.Timer是直接调用接口而Quertz则是需要架包

2.时间控制上的不同。

3.低层机制的不同。


Timer的定义:有且仅有一个后台线程对多个业务线程进行定时定频率的调度

Timer——定时调用TimerTask

/** * 抽象类 * @author  * */public class MyTimek extends TimerTask{private String name;public MyTimek(String inputName){name=inputName;}public void run() {// TODO Auto-generated method stubSystem.out.println("打印当前的内容"+name);}//加入Name中get和set的构造器public String getName() {return name;}public void setName(String name) {this.name = name;}}

/** * 指定延迟时间执行定时任务 * @author  * */public class TimerTask {public static void main(String[] args){//创建一个timer实例Timer timer=new Timer();//创建一个MyTiMerTask实例MyTimek mytimek=new MyTimek("No");//通过timer定时定频率调用mytimek的业务逻辑//即在第一次执行当前时间两秒后之后每隔一秒钟执行一次timer.schedule(mytimek, 2000,1000);}}

Schedule的四种用法

Schedule(task,time)     task——所要安排的任务    time——咨询任务的时间          作用——在时间等于或超过time的时候执行且仅执行一次task

/** * 抽象类 * @author  * */public class MyTimek extends TimerTask{private String name;public MyTimek(String inputName){name=inputName;}public void run() {// TODO Auto-generated method stubCalendar calendar=Calendar.getInstance();SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");System.out.println("打印当前的时间:"+sf.format(calendar.getTime()));System.out.println("打印当前的内容"+name);}public String getName() {return name;}public void setName(String name) {this.name = name;}}

/** * 指定延迟5秒执行定时当前时间任务 * Schedule(task,time)  * @author  * */public class TimerTask {public static void main(String[] args){//创建一个timer实例Timer timer=new Timer();//创建一个MyTiMerTask实例MyTimek mytimek=new MyTimek("No");//通过timer定时定频率调用mytimek的业务逻辑//即在第一次执行当前时间两秒后之后每隔一秒钟执行一次//timer.schedule(mytimek, 2000,1000);Calendar calendar=Calendar.getInstance();SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");System.out.println(sf.format(calendar.getTime()));//获取当前5秒钟后的时间calendar.add(Calendar.SECOND, 5);mytimek.setName("schedule1");timer.schedule(mytimek, calendar.getTime());}}