Spring Boot 一次性定时器
先讲讲Spring提供的TaskScheduler接口
该接口提供了六种不同的定时执行任务
public interface TaskScheduler {
ScheduledFuture schedule(Runnable task, Trigger trigger);
//指定时间执行一次性任务
ScheduledFuture schedule(Runnable task, Date startTime);
ScheduledFuture scheduleAtFixedRate(Runnable task, Date startTime, long period);
ScheduledFuture scheduleAtFixedRate(Runnable task, long period);
ScheduledFuture scheduleWithFixedDelay(Runnable task, Date startTime, long delay);
ScheduledFuture scheduleWithFixedDelay(Runnable task, long delay);
}
详情可以查看
Spring基础学习-任务调度TaskScheduler
不多废话了,直接上代码,虽然很简洁,但是明显的扩展性不够高,向上实现接口能够实现更好的扩展性
//定时器类
public class MyTimer extends DefaultManagedTaskScheduler {
//定时执行任务
public void addTriggerTaskOneTime(Date date, Runnable runnable) {
ScheduledFuture<?> future = schedule(runnable, date);
}
}
调用方式
public void Test(){
Mytimer myTimer=new MyTimer();
Date time="执行的时间";
myTimer.addTriggerTaskOneTime(time, new Runnable() {
public void run() {
System.out.println(time+ "执行时间");
}
});
}