Java中Timer的用法

现在项目中用到需要定时去检查文件是否更新的功能。timer正好用于此处。

用法很简单,new一个timer,然后写一个timertask的子类即可。

代码如下:

  1. package comz.autoupdatefile;  
  2.   
  3. import java.util.Timer;  
  4. import java.util.TimerTask;  
  5.   
  6. public class M {  
  7.     public static void main(String[] args) {  
  8.        /*
             * 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

  9.     }  
  10. }  
  11.   
  12. class RunTask extends TimerTask {  
  13.   
  14.     @Override  
  15.     public void run() {  
  16.         System.out.println("dddd");  
  17.   
  18.     }  
  19.   
  20. }  


当然,timer的功能也可以通过自己构造线程,然后在线程中用sleep来模拟停止一段时间,然后再执行某个动作。

其实,看一下timertask的源码就立即可以知道,timertask就是实现了runnable接口的。也就是说,通过timer来间隔一段时间执行一个操作,也是通过一个线程来做到的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值