在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 stub
System.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 stub
Calendar 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());
}
}