定时/计划功能主要使用的就是定时器对象,它在内部还是使用多线程的方式进行处理,所以它和线程技术还是有非常大的关联。
定时器类主要作用就是设置计划任务,但封装任务的类却是TimerTask类.TimerTask类是一个抽象类。
执行任务的时间晚于当前时间- - - - - -在未来执行的效果
进口java.util.Date; 进口java.util.TimerTask; 公开课MyTask延伸TimerTask { @Override 公共空间run () { system . out。println(“任务执行了,时间为:" +新日期()); } } 公开课Test1 { 公共静态void main (String [] args) { system . out。println(“当前时间为:“新日期+ ()); 日历calendarRef=Calendar.getInstance (); calendarRef.add(日历。第二,10); 日期runDate=calendarRef.getTime (); MyTask任务=new MyTask ();//查看定时器构造方法,创建一个计时器就是启动一个新的线程 计时器计时=new计时器(); 计时器。日程安排(任务,runDate);//定时器在某个时间(runDate)执行某个任务(任务) } }
定时器中允许有多个TimerTask任务及延时的测试
TimerTask是以队列的方式一个一个被顺序性地执行,所以执行时间有可能和预期的时间不一致,因为前面的任务有可能消耗的时间较长,则后面的任务运行的时间也被延后。
进口java.util.Date; 进口java.util.TimerTask; 公开课MyTaskA延伸TimerTask { @Override 公共空间run () { 尝试{ system . out。println(“一个定时器,开始时间为:" +新日期()); thread . sleep (20000); system . out。println(“一个计时器结束,时间为:" +新日期()); }捕捉(InterruptedException e) { e.printStackTrace (); } } } 进口java.util.Date; 进口java.util.TimerTask; 公开课MyTaskB延伸TimerTask { @Override 公共空间run () { system . out。println (" B开始定时器,时间为:" +新日期()); system . out。println (" B计时器结束,时间为:" +新日期()); } } 进口java.util.Calendar; 进口java.util.Date; 进口java.util.Timer; 公开课Test1 { 公共静态void main (String [] args) { system . out。println(“当前时间为:“新日期+ ()); 日历calendarRef1=Calendar.getInstance (); 日期runDate1=calendarRef1.getTime (); system . out。println(“一个计划时间为:" + runDate1); 日历calendarRef2=Calendar.getInstance (); calendarRef2.add(日历。第二,10); 日期runDate2=calendarRef2.getTime (); system . out。println (" B计划时间为:" + runDate2); MyTaskA task1=new MyTaskA (); MyTaskB task2=new MyTaskB (); 计时器计时=new计时器(); 计时器。计划(task1 runDate1);//定时器在某个时间(runDate)执行某个任务(任务) 计时器。日程安排(task2 runDate2); } }
时间表(TimerTask的任务,第一次约会,长期)
该方法的作用是在指定的日期之后按指定的间隔周期,无限循环地执行某一任务。
进口java.util.Date; 进口java.util.TimerTask; 公开课MyTask延伸TimerTask { @Override 公共空间run () { system . out。println(“任务开始:“+新日期()); System.out.println (“mytask…”); system . out。println(“任务结束:“+新日期()); } } 进口java.util.Calendar; 进口java.util.Date; 进口java.util.Timer; 公共类运行{ 公共静态void main (String [] args) { system . out。println(“当前时间为:“新日期+ ()); 日历c=Calendar.getInstance (); c.add(日历。第二,10); 日期runDate1=c.getTime (); System.out.println(“计划时间为:“+ runDate1); MyTask MyTask=new MyTask (); 计时器计时=new计时器(); 计时器。日程安排(myTask runDate1 10000); } }
TimerTask类的cancel()方法
TimerTask类中的cancel()方法的作用是将自身从任务队列中进行清除。
进口java.util.Date; 进口java.util.TimerTask; 公开课MyTaskA延伸TimerTask { @Override 公共空间run () { system . out。println(“运行计时器=" +新日期()); this.cancel (); System.out.println(“任务自己移除自己”); } } 进口java.util.Date; 进口java.util.TimerTask; 公开课MyTaskB延伸TimerTask { @Override 公共空间run () { system . out。println (" B运行计时器=" +新日期()); } } 进口java.util.Calendar; 进口java.util.Date; 进口java.util.Timer; 公共类运行{ 公共静态void main (String [] args) { system . out。println(“当前时间为:“新日期+ ()); 日历c=Calendar.getInstance (); 日期runDate1=c.getTime (); System.out.println(“计划时间为:“+ runDate1); MyTaskA MyTaskA=new MyTaskA (); MyTaskB MyTaskB=new MyTaskB (); 计时器计时=new计时器(); 计时器。日程安排(myTaskA runDate1 4000); 计时器。日程安排(myTaskB runDate1 4000); } }Java线程定时器定时器用法详细总结