java 自带 定时器Timer

package com.TestTime;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Timer;

public class  Time extends Timer {
	private Time(){};
	private Time(String name ){};
    public static void main(String []args){
    	 Time t=new Time();//创建一个新计时器。
    	 Time t1=new Time("name1");//创建一个新计时器,其相关的线程具有指定的名称。
    	 Calendar cal = new  GregorianCalendar(2013, 07, 06,18,38,0);
    	 /*这个是设置开始时间
    	 year - 用来在日历中设置 YEAR 日历字段的值。
    	 month - 用来在日历中设置 MONTH 日历字段的值。Month 值是基于 0 的,例如,0 表示 1 月。
    	 dayOfMonth - 用来在日历中设置 DAY_OF_MONTH 日历字段的值。
    	 hourOfDay - 用来在日历中设置 HOUR_OF_DAY 日历字段的值。
    	 minute - 用来在日历中设置 MINUTE 日历字段的值。
    	 second - 用来在日历中设置 SECOND 日历字段的值。*/
         Date d=null;
		try {
			d = cal.getTime();
			System.out.println(d.getTime());
		} catch (Exception e) {
			e.printStackTrace();
		}
    	t.scheduleAtFixedRate(new Job(), d, 1000);//定时器从 2013年8月6号 18时 38分钟后 每分钟执行一次
    	t.scheduleAtFixedRate(new Job("job1"), 1000, 3000);//定时器1秒后  每3秒钟执行一次
    }
}



package com.TestTime;

import java.util.Date;
import java.util.TimerTask;
/**
 * 定时器测试类
 * @author Administrator
 *
 */
public class Job extends TimerTask{
	 String name ="";
	 //设置构造函数是为了便于执行某个方法
     public Job(){};
     public Job(String Jobname){
    	 this.name=Jobname;
     };
     @Override
 	public void run() {
 		 if(name.equals("job1")){
 			test1();
 		 }else {
 			test2();
 		 }
 	}
	
     
     /**
      * 测试方法一
      */
   public void test1(){
	   Date d=new Date();
 	   System.out.println("这个是定时器job1--"+d.getMinutes());
   }
     /**
      * 测试方法二
      */
   public void test2(){
	   Date d=new Date();
 	   System.out.println("这个是定时器"+d.getMinutes());
   }  
     
    
}



如果想在服务启动后运行定时器

package com.accp;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Timer;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class  Time extends Timer implements ServletContextListener {
	 public  Time(){};  
	 public  Time(String name ){}
     Time t=null;
     Time t1=null;
	public void contextDestroyed(ServletContextEvent event) {
		t.cancel();
		// TODO Auto-generated method stub
		event.getServletContext().log("销毁方法");
	}
	public void contextInitialized(ServletContextEvent event) {
		// TODO Auto-generated method stub
	  
		 event.getServletContext().log("定时器启动");
		 t=new Time();//创建一个新计时器。  
         Time t1=new Time("name1");//创建一个新计时器,其相关的线程具有指定的名称。  
         Calendar cal = new  GregorianCalendar(2013, 07, 07,21,16,0);  
         /*这个是设置开始时间 
         year - 用来在日历中设置 YEAR 日历字段的值。 
         month - 用来在日历中设置 MONTH 日历字段的值。Month 值是基于 0 的,例如,0 表示 1 月。 
         dayOfMonth - 用来在日历中设置 DAY_OF_MONTH 日历字段的值。 
         hourOfDay - 用来在日历中设置 HOUR_OF_DAY 日历字段的值。 
         minute - 用来在日历中设置 MINUTE 日历字段的值。 
         second - 用来在日历中设置 SECOND 日历字段的值。*/  
         Date d=null;  
        try {  
            d = cal.getTime();  
            System.out.println(d.getTime());  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
       t.scheduleAtFixedRate(new Job(), d, 1000);//定时器从 2013年8月7号 21时 16分钟后 每分钟执行一次  
        t.scheduleAtFixedRate(new Job("job1"), 1000, 3000);//定时器1秒后  每3秒钟执行一次  
	}

}


package com.accp;
import java.util.Date;
import java.util.TimerTask;
public class Job  extends TimerTask {

	 String name ="";  
     //设置构造函数是为了便于执行某个方法  
     public Job(){};  
     public Job(String Jobname){  
         this.name=Jobname;  
     };  
     @Override  
    public void run() {  
         if(name.equals("job1")){  
            test1();  
         }else {  
            test2();  
         }  
    }  
      
       
     /** 
      * 测试方法一 
      */  
   public void test1(){  
       Date d=new Date();  
       System.out.println("这个是定时器job1--"+d.getMinutes());  
   }  
     /** 
      * 测试方法二 
      */  
   public void test2(){  
       Date d=new Date();  
       System.out.println("这个是定时器"+d.getMinutes());  
   }  
}

web.xml 中配置

<listener>
	   <listener-class>com.accp.Time</listener-class>
</listener>








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值