建设厅安全证考试报名在哪个网站,西安关键字优化哪家好,网站运营规划,网站开发工作 岗位怎么称呼在JAVA中实现定时器功能要用的2个类是Timer,TimerTask Timer类是用来履行任务的类#xff0c;它接受1个TimerTask做参数 Timer有两种履行任务的模式,最经常使用的是schedule,它可以以两种方式履行任务:1:在某个时间(Data)#xff0c;2:在某个固定的时间以后(int delay).这两种…在JAVA中实现定时器功能要用的2个类是Timer,TimerTask Timer类是用来履行任务的类它接受1个TimerTask做参数 Timer有两种履行任务的模式,最经常使用的是schedule,它可以以两种方式履行任务:1:在某个时间(Data)2:在某个固定的时间以后(int delay).这两种方式都可以指定任务履行的频率,本文有2个例子,1个是简单的1个是用了内部类 1.简单实例 先写1个类 public class TimeTest { public static void main(String[] args) { Timer timer new Timer(); timer.schedule(new MyTask(),1000,2000); } 然后再写个类 public class MyTask extends TimerTask{ Override public void run() { System.out.println(开始运行); } } 这样就能够完成1个简单的定时器,但是还有1种方法就是把这2个类写入到1个类中,也就是内部类了 2.内部类 public class SerchRun { protected static void startRun(){ Timer timer new Timer(); TimerTask task new TimerTask(){ public void run(){ System.out.println(开始运行); //在这写你要调用的方法 } }; timer.scheduleAtFixedRate(task, new Date(),2000);//当前时间开始起动 每次间隔2秒再启动 // timer.scheduleAtFixedRate(task, 1000,2000); // 1秒后启动 每次间隔2秒再启动 } public static void main(String[] args) { SerchRun.startRun(); } } schedule和scheduleAtFixedRate的区分在于如果指定开始履行的时间在当前系统运行时间之前scheduleAtFixedRate会把已过去的时间也作为周期履行而schedule不会把过去的时间算上。
比如:
SimpleDateFormat fTime new SimpleDateFormat(yyyy/MM/dd HH:mm:ss); Date d1 fTime.parse(2005/12/30 14:10:00); t.scheduleAtFixedRate(new TimerTask(){ public void run() { System.out.println(this is task you do6); } },d1,3*60*1000);
间隔时间是3分钟指定开始时间是2005/12/30 14:10:00如果我在14:17:00分履行这个程序那末会立刻打印3次
this is task you do6 //14:10 this is task you do6 //14:13 this is task you do6 //14:16
并且注意下1次履行是在14:19 而不是 14:20。就是说是从指定的开始时间开始计时而不是从履行时间开始计时。
但是上面如果用schedule方法间隔时间是3分钟指定开始时间是2005/12/30 14:10:00那末在14:17:00分履行这个程序则立即履行程序1次。并且下1次的履行时间是 14:20而不是从14:10开始算的周期(14:19)。
为了让学习变得轻松、高效今天给大家免费分享一套Java入门教学资源。帮助大家在成为Java架构师的道路上披荆斩棘。需要资料的欢迎加入学习交流群928505736