如果想要异步,如何异步呢?
异步很简单,使用 @EnableAsync
和 @Async
这两个注解就可以了,如下:
@Slf4j@Component@EnableScheduling@EnableAsyncpublic class TaskDemo {@Async@Scheduled(fixedRate = 2000)public void printTime3() throws InterruptedException {log.info("任务A开始------- {}", LocalDateTime.now());Thread.sleep(2000);log.info("任务A完成------- {}", LocalDateTime.now());}@Async@Scheduled(fixedDelay = 2000)public void printTime4() throws InterruptedException {log.info("任务B开始------- {}", LocalDateTime.now());Thread.sleep(2000);log.info("任务B完成------- {}", LocalDateTime.now());}}
控制台输出:
2022-10-25 15:04:05.833INFO 15604 --- [task-1] cn.god23bin.demo.task.TaskDemo: 任务A开始------- 2022-10-25T15:04:05.8332022-10-25 15:04:05.833INFO 15604 --- [task-2] cn.god23bin.demo.task.TaskDemo: 任务B开始------- 2022-10-25T15:04:05.8332022-10-25 15:04:07.833INFO 15604 --- [task-4] cn.god23bin.demo.task.TaskDemo: 任务B开始------- 2022-10-25T15:04:07.8332022-10-25 15:04:07.833INFO 15604 --- [task-3] cn.god23bin.demo.task.TaskDemo: 任务A开始------- 2022-10-25T15:04:07.8332022-10-25 15:04:07.848INFO 15604 --- [task-2] cn.god23bin.demo.task.TaskDemo: 任务B完成------- 2022-10-25T15:04:07.8482022-10-25 15:04:07.848INFO 15604 --- [task-1] cn.god23bin.demo.task.TaskDemo: 任务A完成------- 2022-10-25T15:04:07.8482022-10-25 15:04:09.833INFO 15604 --- [task-5] cn.god23bin.demo.task.TaskDemo: 任务A开始------- 2022-10-25T15:04:09.8332022-10-25 15:04:09.843INFO 15604 --- [task-4] cn.god23bin.demo.task.TaskDemo: 任务B完成------- 2022-10-25T15:04:09.8432022-10-25 15:04:09.843INFO 15604 --- [task-3] cn.god23bin.demo.task.TaskDemo: 任务A完成------- 2022-10-25T15:04:09.8432022-10-25 15:04:09.844INFO 15604 --- [task-6] cn.god23bin.demo.task.TaskDemo: 任务B开始------- 2022-10-25T15:04:09.8432022-10-25 15:04:11.830INFO 15604 --- [task-7] cn.god23bin.demo.task.TaskDemo: 任务A开始------- 2022-10-25T15:04:11.8302022-10-25 15:04:11.845INFO 15604 --- [task-6] cn.god23bin.demo.task.TaskDemo: 任务B完成------- 2022-10-25T15:04:11.8452022-10-25 15:04:11.845INFO 15604 --- [task-5] cn.god23bin.demo.task.TaskDemo: 任务A完成------- 2022-10-25T15:04:11.845
总结首先讲了下定时任务是什么?接着讲了有哪些实现方式?对这些方式进行介绍 。
主要的定时任务可以通过以下的方式实现:
- 纯手写单线程死循环,配合线程的等待机制的方式(不推荐,麻烦 , 问题多多)
- 使用 JDK 提供的 Timer 配合 TimerTask 的方式(不推荐 , 单线程)
- 使用 JDK 提供的多线程的 ScheduledExecutorService 的方式(可代替 Timer,多线程的)
- 使用 Spring 提供的定时任务的方式(推荐,更加方便,可异步)
最后的最后由本人水平所限,难免有错误以及不足之处,
屏幕前的靓仔靓女们
如有发现,恳请指出!最后,谢谢你看到这里,谢谢你认真对待我的努力,希望这篇博客对你有所帮助!
你轻轻地点了个赞,那将在我的心里世界增添一颗明亮而耀眼的星!
【我终于会写 Java 的定时任务了!】
推荐阅读
- realme真我v15什么时候发布_realme锦鲤手机发布时间
- 真我GTNeo2T测评_真我GTNeo2T续航情况测试
- 闻道Go语言,6月龄必知必会
- 我的世界驯服马方法是什么
- Paxos分布式系统共识算法?我愿称其为点歌算法…
- C#实现生成Markdown文档目录树
- 我的世界怎么制作垂直升降电梯(我的世界怎么做垂直升降电梯)
- 我的世界1.12水电梯怎么做(我的世界1.16版本水电梯如何做)
- 如何在我的世界做电梯(网易版mc怎么做电梯)
- 我的世界脚手架电梯怎么做(我的世界建筑电梯怎么做)