jdk原生Timer和spring提供的SpringTask的用法
单体的定时任务
1.定时任务
1.1.Timer的使用
说明:Timer
是jdk1.3
引入的工具类java.util.Timer
使用步骤:
创建一个定时器:
Timer timer = new Timer();
设置一个定时任务:
timer.schedule(TimerTask定时任务抽象类的实现,其他参数);
api:
3.1. timer.schedule(TimerTask,延时的毫秒数) 执行一次
3.2. timer.schedule(TimerTask,Date) Date代表绝对时间,定时任务在指定时间执行一次
3.3. timer.schedule(TimerTask,延时的毫秒数或者Date,每次重复的毫秒数);
1.2.SpringTask的使用
说明:SpringTask
是Spring
框架提供的轻量级定时任务调度工具,他集成在Spring-Context
依赖中!!!
,因此我们只需要引入spring-boot-starter-web
依赖即可
缺点: 默认实现单线程任务(多个定时任务Task1和Task2只能串行(同一个线程)执行,不能并发执行)
使用步骤:
引入依赖:
开启定时任务功能:
定义定时任务:
@Component public class SpringTaskTest { @Scheduled(cron = "0/5 * * * * ?") //使用cron表达式 public void Task1(){ System.out.println("当前的时间:"+new Date()); System.out.println("当前的线程:"+Thread.currentThread().getName()); } @Scheduled(cron = "0/5 * * * * ?") //运行结果,这两个均由同一个线程执行 public void Task2(){ System.out.println("当前的时间:"+new Date()); System.out.println("当前的线程:"+Thread.currentThread().getName()); } }
解决默认单线程执行的配置和一些关闭时配置
评论