现在项目中用到需要定时去检查文件是否更新的功能。timer正好用于此处。
用法很简单,new一个timer,然后写一个timertask的子类即可。
代码如下:
- package comz.autoupdatefile;
- import java.util.Timer;
- import java.util.TimerTask;
- public class M {
- public static void main(String[] args) {
- /*
* 1秒:1000;
* (单位是毫秒60*60*1000为一小时)(单位是毫秒3*60*1000为三分钟)
* 在1秒后执行此任务,每次间隔3分钟执行一次,如果传递一个Data参数,就可以在某个固定的时间执行这个任务.
*/
Timer timer = new Timer();
timer.schedule(new RunTask(), 1000, 3*60*1000);
while (true) {//这个是用来停止此任务的,否则就一直循环执行此任务
try {
// int in = System.in.read();
// if(in == 's'){
// timer.cancel();//使用这个方法退出任务
// break;
// }
int hour = Calendar.getInstance().getTime().getHours();
if (hour > 23) {
System.out.println("当前时间已超过23点,结束程序");
timer.cancel();//使用这个方法退出任务
System.exit(0);
break;
}
} catch (Exception e) {
e.printStackTrace();
}
}//while
- }
- }
- class RunTask extends TimerTask {
- @Override
- public void run() {
- System.out.println("dddd");
- }
- }
当然,timer的功能也可以通过自己构造线程,然后在线程中用sleep来模拟停止一段时间,然后再执行某个动作。
其实,看一下timertask的源码就立即可以知道,timertask就是实现了runnable接口的。也就是说,通过timer来间隔一段时间执行一个操作,也是通过一个线程来做到的。