SpringBoot定时任务
1.使用SpringBoot注解完成定时任务
新建任务类ScheduledTasks
@Component 把普通pojo实例化到spring容器中
@EnableScheduling 开启定时任务
具体设置定时任务时间请参考: cron表达式或直接通过fixdRate‘fixedDelay、initialDelay。。。指定值
@Component @EnableScheduling public class ScheduledTasks { //每两秒调用一次 @Scheduled(fixedRate = 2000) public void reportCurrentTime() { System.out.println("ScheduledTasks-----FixedRate现在时间:" + new Date()); } @Scheduled(cron="*/2 * * * * *") public void reportCurrentTimeCron(){ System.out.println("ScheduledTasks-----Cron现在时间:" + new Date()); } }
2.创建多线程定时任务
/* @Component: 注解用于对那些比较中立的类进行注释 相对与在持久层、业务层和控制层分别采用 @Repository、@Service 和 @Controller 对分层中的类进行注释 @Configuration:表明该类是一个配置类 @EnableScheduling 开启定时任务 @EnableAsync:开启异步事件的支持、开启多线程 */ @Component @EnableScheduling // 1.开启定时任务 @EnableAsync // 2.开启多线程 public class ManyThreadTasks { @Async @Scheduled(fixedDelay = 1000) //间隔1秒 public void first() throws InterruptedException { System.out.println("第一个定时任务开始 : " + LocalDateTime.now().toLocalTime() + "\r\n线程 : " + Thread.currentThread().getName()); System.out.println(); Thread.sleep(1000 * 10); } @Async @Scheduled(fixedDelay = 2000) public void second() { System.out.println("第二个定时任务开始 : " + LocalDateTime.now().toLocalTime() + "\r\n线程 : " + Thread.currentThread().getName()); System.out.println(); } }
3.通过TimerTask实现【该方式使用的较少】
public class TimerTasks { public static void main(String[] args) { TimerTask timerTask = new TimerTask() { @Override public void run() { System.out.println("task run:"+ new Date()); } }; Timer timer = new Timer(); //安排指定的任务在指定的时间开始进行重复的固定延迟执行。这里是每3秒执行一次 timer.schedule(timerTask,10,3000); } }
参考文章:https://www.cnblogs.com/mmzs/p/10161936.html