定时任务: 封装quartz
<dependency>
<groupId>cn.xnatural</groupId>
<artifactId>sched</artifactId>
<version>1.0.3</version>
</dependency>
Sched sched = new Sched().init();
sched.cron(cron表达式, 任务函数)
sched.cron("0 0/5 * * * ? ", () -> {
System.out.println("每隔5分钟执行")
})
sched.time(时间点(Date), 任务函数)
sched.time(
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2020-12-12 11:55:33"),
() -> System.out.println("2020-12-12 11:55:33 执行")
);
sched.after(一段时间(Duration), 任务函数)
sched.after(Duration.ofMinutes(3), () -> {
System.out.println("3分钟之后执行")
});
sched.fixedDelay(时间间隔(Duration), 第一次执行延时(Duration), 任务函数)
每次任务执行完成后才开始计算下次执行时间
sched.fixedDelay(Duration.ofSeconds(10), Duration.ofSeconds(5), () -> {
System.out.println("fixedDelay====第一次执行延时5秒执行");
});
sched.fixedDelay(Duration.ofSeconds(10), () -> {
System.out.println("fixedDelay====");
});
sched.fixedRate(时间间隔(Duration), 第一次执行延时(Duration), 任务函数)
每次执行即计算下次执行时间. 注意函数自己应该捕获异常
sched.fixedRate(Duration.ofSeconds(10), Duration.ofSeconds(5), () -> {
System.out.println("fixedRate====第一次执行延时5秒执行");
});
sched.fixedRate(Duration.ofSeconds(10), () -> {
System.out.println("fixedRate====");
});
sched.dyn(时间函数(返回Date), 任务函数)
sched.dyn(() -> { //每次执行完任务函数,会获取一次下次执行时间
if (new Random().nextInt(100) == 70) return null; // 返回null任务停止
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MINUTE, new Random().nextInt(30) + 10);
return cal.getTime();
}, () -> System.out.println("动态任务执行"));