📄 timer类.txt
字号:
Timer类
Java为程序代码的定时执行提供了方便的类。例如,如果编写一个时钟应用程序,希望他能够每秒钟更新一次显示,或者想在一些预定的时间播放一个报警声音,
可以使用多线程并调用Thread.sleep()方法来完成这些任务。但使用java.util.Timer和java.util.TimerTask类会更简单一些。
Timer类的实例观察时钟并在适当时执行对象。例如,可以像下面这样在指定的时间运行某个任务:
//Y2K.java
import java.util.*;
public class Y2K{
public static void main(String[] args){
Timer timer = new Timer();
TimerTask task = new TimerTask(){
public void run(){
System.out.println ("Boom!");
}
};
Calendar c = new GregorianCalendar(2000, Calendar.JANUARY, 1);
timer.schedule(task, c.getTime());
}
}
TimerTask实现Runnable接口。为了创建一个任务,可以简单地生成TimerTask类的子类并给他提供一个run()方法。我们已经简单地创建了TimerTask类的一个匿名子类,它将把一条消息给System.out流。使用Timer类的schedule()方法,要求这个任务在2000年1月1日运行。
还有其他一些不同的schedule()方法,使用这些方法可以只运行任务一次和每隔一段时间反复运行这个任务。有两种重复执行的任务:固定延迟的任务和固定速率的任务。固定延迟意味着:执行一次任务一次执行的结果到下一次执行之间的这段时间长度是固定的。固定速率意味着:任务应该每隔一段固定的时间重新运行一次。
例如,使用下面这样的程序代码,可以每隔一秒钟更新一次时钟显示:
Timer timer = new Timer();
TimerTask task = new TimerTask(){
public void run(){
repaint();
}
};
timer.schedule(task, 0, 1000);
对于事情执行的确切时间时间类实际上不能作出任何保证,为了达到较为精确的程度,需要安装实时操作系统。然而,时间类可以给一些合理的保证,如,任务将在特定的时间执行,但提供的任务不应该过于复杂,对于运行很慢的任务,一次执行的结束时间可能会在下一次执行的开始时间之后。
//TimerTester.java
import java.util.*;
public class TimerTester{
public static void main(String[] args){
Timer timer = new Timer();
TimerTask task = new TimerTask(){
public void run(){
System.out.println ("Love");
}
};
timer.schedule(task, 5000, 1000);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -