java定时器(1)--Timer定时器的使用

对于简单的project,就可以只使用简单的定时器任务,不需要做复杂的控制和保存状态,使用JDK 入门级的定期器Timer来执行重复任务就可以。

JDK中,定时器任务的执行需要两个基本的类:java.util.Timer; java.util.TimerTask; 要运行一个定时任务,最基本的步骤如下: (1)建立一个要执行的任务TimerTask。 (2)创建一个Timer实例,通过Timer提供的schedule()方法,将TimerTask加入到定时器Timer中,同时设置执行的规则即可。 当程序执行了Timer初始化代码后,Timer定时任务就会按照设置去执行。 

Timer中的schedule()方法的多种方法如下:

--安排在指定的时间执行指定的任务:void schedule(TimerTask task, Date time)

 -- 安排指定的任务在指定的时间开始进行重复的固定延迟执行:void schedule(TimerTask task, Date firstTime, long                            period) 

 --  安排在指定延迟后执行指定的任务:void schedule(TimerTask task, long delay)

 -- 安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。void schedule(TimerTask task, long delay, long                                period) 

Timer 是线程安全的,此类可扩展到大量同时安排的任务(存在数千个都没有问题)。其所有构造方法都启动计时器线程。可以调用cancel() 终止此计时器,丢弃所有当前已安排的任务。purge()从此计时器的任务队列中移除所有已取消的任务。此类不提供实时保证:它使用 Object.wait(long) 方法来安排任务。 

TimerTask是一个抽象类,由 Timer 安排为一次执行或重复执行的任务。它有一个抽象方法run()----计时器任务要执行的操作。因此,每个具体的任务类都必须继承TimerTask类,并且重写run()方法。另外它还有两个非抽象的方法: 
boolean cancel() 
          取消此计时器任务。 
long scheduledExecutionTime() 
          返回此任务最近实际 执行的安排 执行时间。 

 

代码:

package com.rainnie.controller;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimerTask;

public class TestTimeTask extends TimerTask{

	@Override
	public void run() {
		Date dt = new Date();  
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");  
        TextToFile("D:\\Task.txt","定时执行 :"+sdf.format(dt));
		
	}
	  public void TextToFile(final String strFilename, final String strBuffer)  
      {  
        try{      
          File fileText = new File(strFilename);  
          if (!fileText.exists()) {
              fileText.createNewFile();
          }
          FileWriter fileWriter = new FileWriter(fileText,true);  
          PrintWriter out = new PrintWriter(fileWriter); 
          out.println(strBuffer);
          out.close(); 
          fileWriter.close();  
        }  
        catch (IOException e)  
        {  
          e.printStackTrace();  
        }  
      }  


}

 

package com.rainnie.controller;

import java.util.Timer;

public class TestTimeController {
	public static void main(String[] args) {
		final long PERIODTIME = 1* 60 * 1000;// 1分钟
		Timer timer = new Timer();
        TestTimeTask task = new TestTimeTask();
        int PERIOD = 1;
        timer.schedule(task, 0, PERIOD*PERIODTIME);
	}
}

 

执行结果:java定时器(1)--Timer定时器的使用_第1张图片

你可能感兴趣的:(#,java基础)