服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

使用java中的timer和timertask

   有的时候我们需要每隔一段时间去执行某个任务,在java中提供了timer and timertask来完成这个任务,本文提供一个应用程序的源代码告诉你如何使用这两个类。

   timer和timertask的方法很少,使用起来也非常方便。希望如果遇到问题参考一下api doc,里面写的很清楚。timertask是个抽象类,他扩展了object并实现了runnable接口,因此你必须在自己的task中实现public void run()方法。这也就是我们需要执行的具体任务。timer实际上是用来控制task的,他提供的主要方法是重载的schedule()方法。我们这里将使用schedule(timertask task,long time,long internal)方法来说明如何使用它。

   下面直接提供应用程序的源代码,有得时候感觉说的太多,对初学者作用并不是很大。但是当把代码给他们看了以后,很容易就接受了。下面我要完成的任务就是每隔3秒钟从一个文件中把内容读出来并打印到控制台,文件的内容如下:
ming.txt
hello world
beijing
basketball
java
c/c++
    这里涉及到一些io的知识,但并不复杂。我们使用bufferedreader从文件里面读取内容,一行一行的读取,代码如下:

   try
   {
    bufferedreader br = new bufferedreader(new filereader("ming.txt")); 
    string data = null;
    while((data=br.readline())!=null)
    {
     system.out.println(data); 
    } 
   } 
   catch(filenotfoundexception e)
   {
    system.out.println("can not find the file"); 
   }
   catch(ioexception e)
   {
    e.printstacktrace(); 
   }
在主程序中我们启动timer让他开始执行读取文件的工作。整个程序的内容如下
import java.util.*;
import java.io.*;

public class timeruse
{
 public static void main(string[] args)
 {
  picktask pt = new picktask();
  pt.start(1,3); 
 } 
}

class picktask
{
 private timer timer;

 public picktask()
 {
  timer = new timer();
 }
 
 private timertask task = new timertask()
 {
  public void run()
  {
   
   try
   {
    bufferedreader br = new bufferedreader(new filereader("ming.txt")); 
    string data = null;
    while((data=br.readline())!=null)
    {
     system.out.println(data); 
    } 
   } 
   catch(filenotfoundexception e)
   {
    system.out.println("can not find the file"); 
   }
   catch(ioexception e)
   {
    e.printstacktrace(); 
   }
   
  } 
 };
 
 public void start(int delay,int internal )
 {
  timer.schedule(task,delay*1000,internal*1000); 
 }
 
}

程序的输出结果为:

microsoft windows xp [版本 5.1.2600]
(c) 版权所有 1985-2001 microsoft corp.

c:/>java timeruse
hello world
beijing
basketball
java
c/c++
hello world
beijing
basketball
java
c/c++
hello world
beijing
basketball
java
c/c++
hello world
beijing
basketball
java
c/c++

扫描关注微信公众号