java程序定时运行

        又是需要某个程序每隔一段时间运行一次,而且需要他自己运行,而不是需要程序员每隔一段时间运行一下,这是就需要用到TimerTask类,具体情况见下代码:

package dingshi;

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class dingshi {

	public static void main(String[] args) {
		Timer timer = new Timer();
		MyTask task = new MyTask();
        //表示在1秒之后开始执行,并且每2秒执行一次
        timer.schedule(task, 1000, 2000);
	}
}
	
class MyTask extends TimerTask{

    //在run方法中的语句就是定时任务执行时运行的语句。
    public void run() {
    		System.out.println("Hello!! 现在是:" + new Date());
    }
}

运行后的纯输出结果如下:

Hello!! 现在是:Wed Mar 13 21:01:57 CST 2019
Hello!! 现在是:Wed Mar 13 21:01:59 CST 2019
Hello!! 现在是:Wed Mar 13 21:02:01 CST 2019
Hello!! 现在是:Wed Mar 13 21:02:03 CST 2019
Hello!! 现在是:Wed Mar 13 21:02:05 CST 2019
Hello!! 现在是:Wed Mar 13 21:02:07 CST 2019

可以看出确实是每个两秒运行一下run()方法。

如果run()运行的事件超过了,设定的2秒,则run()运行完以后会接着运行,2秒就好像不再起作用了,如下,在run()方法中添加等待5秒的程序:

package dingshi;

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class dingshi2 {

	public static void main(String[] args) {
		Timer timer = new Timer();
		MyTask task = new MyTask();
        //表示在1秒之后开始执行,并且每2秒执行一次
        timer.schedule(task, 1000, 2000);
	}
}
	
class MyTask extends TimerTask{

    //在run方法中的语句就是定时任务执行时运行的语句。
    public void run() {
    		System.out.println("Hello!! 现在是:" + new Date());
    		try {
				Thread.sleep(5000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
    }
}

那么结果会变成这样:

Hello!! 现在是:Wed Mar 13 21:06:07 CST 2019
Hello!! 现在是:Wed Mar 13 21:06:12 CST 2019
Hello!! 现在是:Wed Mar 13 21:06:17 CST 2019
Hello!! 现在是:Wed Mar 13 21:06:22 CST 2019
Hello!! 现在是:Wed Mar 13 21:06:27 CST 2019

猜你喜欢

转载自blog.csdn.net/a857553315/article/details/88541321