首页 >面试题目 > 内容

Java如何实现定时任务?

2023年8月17日 21:11

看完这篇文章你会了解到什么是定时任务,以及为什么austin项目要引入分布式定时任务框架,可以把代码下载下来看到我是怎么使用xxl-job的。

01、如何简单实现定时功能?

我是看视频入门Java的,那时候学Java基础API的时候,看的视频也带有讲定时功能(JDK原生就支持),我记得视频讲师写了Timer来讲解定时任务。

image

当时并不知道定时任务有什么实际作用,所以在初学阶段的我,从来没使用过Timer来实现定时的功能。

再后来,我学到并发了。那时候的讲师提到了ScheduledExecutorService这个接口,它比Timer更加强大,一般我们在JDK里可以用它来实现定时的功能

image

强就强在于ScheduledExecutorService内部是线程池,Timer是单线程,它能更合理的利用资源。

我学并发的时候,我也并不太关注它(它并不是并发的重点),所以我也没用过ScheduledExecutorService来实现定时的功能。

后来吧,要到学习做项目了,那时候视频有个Quartz课程。我记得理解了很久,最后我才反应过来了,原来写了这么多的代码就是用它来实现定时的功能。

至于比ScheduledExecutorServiceTimer好在哪里呢,最直观的是:它支持cron表达式。

image

为啥我会理解很久呢,因为Quartzapi太复杂了(它也有着自己的专业术语和概念性的东西)。不过这种跟着做项目的,我是一步一步跟着敲代码的。

Quartz相关的API我是记不住了,但那时候我理解了:原来我们写代码可以靠「组件包」来完成想要的功能,原来这就是cron表达式。

等到我大三的时候,我想用自己学过的知识点来写个小项目,也算是梳理一遍自己到底学了什么东西。于是,我想起了Quartz

那时候我已经学到了Spring/SpringBoot了。所以当我在网上搜SpringQuartz整合的时候,了解到了SpringTask,再后来发现了@Schedule注解。

image

只需要一个简单的注解,就能实现定时任务的功能,并且支持cron表达式。

那那那那,还要个锤子的Quartz啊!

02、实习&&


参考文章:https://blog.csdn.net/m0_68064743/article/details/123763621

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时候联系我们修改或删除,在此表示感谢。

特别提醒:

1、请用户自行保存原始数据,为确保安全网站使用完即被永久销毁,如何人将无法再次获取。

2、如果上次文件较大或者涉及到复杂运算的数据,可能需要一定的时间,请耐心等待一会。

3、请按照用户协议文明上网,如果发现用户存在恶意行为,包括但不限于发布不合适言论妄图

     获取用户隐私信息等行为,网站将根据掌握的情况对用户进行限制部分行为、永久封号等处罚。

4、如果文件下载失败可能是弹出窗口被浏览器拦截,点击允许弹出即可,一般在网址栏位置设置

5、欢迎将网站推荐给其他人,网站持续更新更多功能敬请期待,收藏网站高效办公不迷路。

      



登录后回复

共有0条评论