介绍
在java中要定时执行任务,需要用到Timer类
一般有两种方式:
- 延迟n秒后执行,且只执行一次
- 延迟n秒后第一次执行,执行后,每间隔m秒重复执行
1.延时n秒后执行,且只执行一次
例子如下:
public class Test {
public Test(){
System.out.println("构造方法");
}
public void test(){
System.out.println("test");
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
final Timer timer=new Timer();
final Test test=new Test();
TimerTask tt=new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
test.test();
timer.cancel();//执行一次任务后终止计时器,如果不加此代码进程无法退出
}
};
timer.schedule(tt, 2000);//延时2秒后执行,且只执行一次
}
}
控制台打印效果如图:
构造方法
test
2.延时n秒后第一次执行,执行后,每间隔m秒再次执行
例子如下:
public class Test {
public Test(){
System.out.println("构造方法");
}
public void test(){
System.out.println(new Date()+"--test");
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
final Timer timer=new Timer();
final Test test=new Test();
TimerTask tt=new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
test.test();
}
};
timer.schedule(tt, 1000,5000);//延时1秒后第一次执行,执行后每间隔5秒执行一次
}
}
在上面的代码中,延时1秒后第一次执行,执行后每间隔5秒执行一次
控制台显示:
构造方法
Fri May 05 10:40:18 CST 2017--test
Fri May 05 10:40:23 CST 2017--test
Fri May 05 10:40:28 CST 2017--test