Java如何实现定时任务


今天小编给大家分享一下Java如何实现定时任务的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Timer是JAVA自带的定时任务类,实现如下:Timer 优缺点分析优点是使用简单,缺点是当添加并执行多个免费云主机域名任务时,前面任务的执行用时和异常将影响到后面任务,这边深海建议谨慎使用。ScheduledExecutorService也是Java自带的类,它可以实现Timer具备的所有功能,并解决了 Timer类存在的问题。实现如下:ScheduledExecutorService优缺点分析优点是,该类是JDK1.5自带的类,使用简单,缺点是该方案仅适用于单机环境。Spring系列框架中Spring Framework自带的定时任务,使用上面两种方式,很难实现某些特定需求,比如每周一执行某任务,但SpringTask可轻松实现。以SpringBoot为例来实现:在SpringBoot的启动类上声明 @EnableScheduling:只需使用@Scheduled注解标注即可,如果有多个定时任务,可以创建多个@Scheduled标注的方法,示例如下:Spring Boot 启动后会自动加载并执行定时任务,无需手动操作。Spring Task 的实现需要使用 cron 表达式来声明执行的频率和规则,cron 表达式是由 6 位或者 7 位组成的(最后一位可以省略),每位之间以空格分隔,每位从左到右代表的含义如下:其中 * 和 ? 号都表示匹配所有的时间。上面的方法都是关于单机定时任务的实现,如果是分布式环境可以使用 Redis 来实现定时任务。使用 Redis实现延迟任务的方法大体可分为两类:通过 ZSet 的方式和键空间通知的方式。通过 ZSet 实现定时任务的思路是,将定时任务存放到 ZSet 集合中,并且将过期时间存储到 ZSet 的 Score 字段中,然后通过一个无线循环来判断当前时间内是否有需要执行的定时任务,如果有则进行执行,具体实现代码如下:我们可以通过 Redis 的键空间通知来实现定时任务,它的实现思路是给所有的定时任务设置一个过期时间,等到了过期之后,我们通过订阅过期消息就能感知到定时任务需要被执行了,此时我们执行定时任务即可。默认情况下 Redis 是不开启键空间通知的,需要我们通过 config set notify-keyspace-events Ex 的命令手动开启,开启之后定时任务的代码如下:以上就是“Java如何实现定时任务”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注百云主机行业资讯频道。

相关推荐: Java享元模式怎么实现

这篇文章主要讲解了“Java享元模式怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java享元模式怎么实现”吧!小型的外包项目,给客户 A 做一个产品展示网站,客户 A 的朋友感觉效果不错,也希望做这样…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 03/12 08:30
下一篇 03/12 08:31

相关推荐