Java定时器Timer的使用
作者:互联网
这是几年前写的旧文,此前发布Wordpress小站上,现在又重新整理。算是温故知新,后续会继续整理。如有错误望及时指出,在此感谢。
我们经常在项目中遇到需要定时执行某个业务的操作.
常见的做法是创建一个线程一直运行着,通过sleep方法来达到定时任务的效果.
其实JDK自带java.util.Timer定时器.
可以帮我们达到:
1.在指定时间执行某个动作;
2.在指定一个固定的时间间隔执行某个动作;
Timer是个执行器,我们只需要给它提交TimerTask任务类,它就会按照我们的定义进行执行.
TimerTask非常简单,就是一个线程.
这里我用固定时间间隔来举例
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Timer;
import java.util.TimerTask;
public class TimeTaskTest1 {
public static void main(String[] args) {
MyTimerTask metricTimerTask = new MyTimerTask();
Timer timer = new Timer();
// 定义开始等待时间 --- 等待 5 秒
// 1000ms = 1s
final long delay = 5000;
// 定义每次执行的间隔时间
final long intevalPeriod = 1000 * 5;
// schedules the task to be run in an interval
// 安排任务在一段时间内运行
printNow("app");
timer.scheduleAtFixedRate(metricTimerTask, delay, intevalPeriod);
// timer.schedule(metricTimerTask, delay, intevalPeriod);
}
public static void printNow(String str) {
LocalDateTime now = LocalDateTime.now();
String format = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println(str + ":" + format);
}
static class MyTimerTask extends TimerTask {
@Override
public void run() {
try {
printNow("start");
System.out.println("do something...");
Thread.sleep(10000);
printNow("stop");
System.out.println("---------------");
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
}
总结:
通过定时器,可以帮助我们减少很多不必要的冗余代码.
标签:定时器,java,format,Timer,Java,TimerTask,import,public 来源: https://www.cnblogs.com/panshan-lurenjia/p/16401874.html