Heim  >  Artikel  >  Java  >  Der Java-Test für geplante Aufgaben erbt TimerTask

Der Java-Test für geplante Aufgaben erbt TimerTask

php是最好的语言
php是最好的语言Original
2018-08-10 15:03:062055Durchsuche

Stellen Sie zunächst den Java-Timer (java.util.Timer) vor, der die Funktion hat, geplante Aufgaben regelmäßig auszuführen. Durch Festlegen des Intervalls des Timers wird er automatisch nach diesem Intervall ausgeführt Vorab geplante Aufgaben (java.util. TimerTask)

Zum Beispiel: Führen Sie die Aufgabe timer.schedule(TimerTask, 0, 60 * 60 * 1000) stündlich aus.

Der erste Parameter von

der Schedule()-Methode ist die Aufgabe, die ausgeführt werden muss. Der Typ dieser Klasse ist java.util.TimerTask. Der zweite Parameter von

ist die Wartezeit vor der Aufgabe, wobei 0 kein Warten bedeutet, der dritte Parameter ist die Intervallzeit in Millisekunden.

 /**
  * 定时任务测试类
  * @author admin
  *
  */
public class TimerScheduleDemo extends TimerTask { 
	 
	public TimerScheduleDemo() { 
	} 
	 
	@Override 
	public void run() { 
		print();
	} 
	 
	public static void main(String[] args) { 
		Timer timer = new Timer(); 
		long delay1 = 1 * 1000; 
		long period1 = 1000; 
		// 从现在开始 1*1000 秒钟之后,每隔 1 秒钟执行一次 
		timer.schedule(new TimerScheduleDemo(), delay1, period1); 
		/*long delay2 = 2 * 1000; 
		long period2 = 2000; 
		// 从现在开始 2 秒钟之后,每隔 2 秒钟执行一次 
		timer.schedule(new TimerScheduleDemo(), delay2, period2); */
	} 
	
	public static void print(){
		System.out.println("method start");
	}
	
}

Aber:

Denn wir hoffen, dass der Timer beim Start des Webprojekts automatisch mit der Zeitmessung beginnen kann, sodass während der gesamten Lebensdauer des Webprojekts Aufgaben regelmäßig ausgeführt werden. Beginnen Sie also Die Timer-Klasse kann keine allgemeine Klasse sein, um den Timer zu starten, indem Sie ihn in der Konfigurationsdatei konfigurieren. Lassen Sie ihn beim Start des Projekts automatisch laden und ausführen, und seine Überlebenszeit beträgt das gesamte Web Projektleben.

Hauptgeschäftscode der Task-Klasse

/**
 * 定时器任务类:即调度任务类
 * @author admin
 */
public class DelFileTask extends TimerTask{


    private static boolean isRunning = false;    
    
    private ServletContext context = null;    
    
    public DelFileTask() {  
        super();  
    }  
      
    public DelFileTask(ServletContext context) {    
        this.context = context;    
    }    
    @Override  
    public void run() {  
          
        if (!isRunning) {  
               
            context.log("开始执行指定任务");   
            /** 
             * 自己的业务代码 
             */  
              
            isRunning = false;    
            context.log("指定任务执行结束");  
        } else {    
            context.log("上一次任务执行还未结束");    
       }  
    }  
	 
}

Diese Klasse erbt hauptsächlich TimerTask und implementiert ihre Ausführungsmethode

Das Folgende ist die Überwachungsklasse, die den Start des Servers überwacht und hinzufügt Aufgabe Gehe zum Aufgabenstapel

/**
 * servlet监听器:监听服务启动时执行调度任务
 * @author admin
 *
 */
public class ContextListener implements ServletContextListener{

	public ContextListener() { 
		
    }  
      
     private java.util.Timer timer = null;    
       
    /** 
     * 初始化定时器 
     * web 程序运行时候自动加载   
     */  
    @Override  
    public void contextInitialized(ServletContextEvent arg0) {  
          
    	/**
    	 * 设置一个定时器  
    	 */
        timer = new java.util.Timer(true);    
            
        arg0.getServletContext().log("定时器已启动");   
    
        /**
         * 定时器到指定的时间时,执行某个操作(如某个类,或方法)  
         */
        //设置执行时间  
        Calendar calendar =Calendar.getInstance();  
        int year = calendar.get(Calendar.YEAR);  
        int month = calendar.get(Calendar.MONTH);  
        int day =calendar.get(Calendar.DAY_OF_MONTH);//每天  
        //定制每天的16:10:00执行,  
        calendar.set(year, month, day, 16, 10, 00);  
        Date date = calendar.getTime();  
        System.out.println(date);  
        
        int period = 1000;  
        //每天的date时刻执行task,每隔persion 时间重复执行  
        timer.schedule(new DelFileTask(arg0.getServletContext()), date, period);
        
        //在 指定的date时刻执行task, 仅执行一次  
        //timer.schedule(new DelFileTask(arg0.getServletContext()), date);  
          
        arg0.getServletContext().log("已经添加任务调度表");    
          
    }  
  
    /** 
     * 销毁 
     */  
    @Override  
    public void contextDestroyed(ServletContextEvent arg0){  
  
        timer.cancel();  
        arg0.getServletContext().log("定时器销毁");  
    }  


}

Diese Klasse wird hauptsächlich verwendet, um einen Scheduler einzurichten und ihn Aufgaben gemäß bestimmten Anforderungen ausführen zu lassen.

Die Task-Listener-Klasse wurde implementiert. >

Verwandte Empfehlungen:

Beispiele für die Verwendung von Timern und geplanten Aufgaben

So verwenden Sie den Java-Timer Timer-Java-Tutorial

Das obige ist der detaillierte Inhalt vonDer Java-Test für geplante Aufgaben erbt TimerTask. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn