| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> SpringBoot实现定时任务的三种方式 -> 正文阅读 |
|
[Java知识库]SpringBoot实现定时任务的三种方式 |
第一种我们可以使用java原生提供的api去实现一个定时任务 利用Timer这个api,去实现定时任务,用Timertask去创建一个任务
其中完成定时的 timer.schedule(task,0,2000); 解释一下这个里面的含义,首先task这个就是你要定时的一个任务,delay代表延迟多久执行,我们这里为了测试设置为0就就是不延迟,period就是每个多久执行一次,我们为了看到效果设置为2000,也就是2秒执行一次 下面来看效果 好了这个时候我们利用javaAPI做的一个定时任务就是完成了,其实这个就是基于java多线程去做的 但是现在在我们企业级应用中定时任务的应用非常广泛,于是就出现了完成定时任务的技术 比如Quarze,这个技术在现在市面上非常流行 你要想在springboot中整合这个技术,我们首先来了解几个词 >工作(job):用于执行具体的任务 >工作明细(jobDetail):用于定义定时工作的信息 >触发器(Trigger):用于描述触发工作的规则,和定义调度通常用Cron来进行定义调度的规则 >调度(scheduler):用于描述工作明细和触发器之间的关系 理解以上的四个词的含义我们来进行整合Quarze 1.第一步就是来导入整合Quarze的坐标
因为springboot中已经提供了版本号了我们这里就用springboot提供的默认版本号 2,这里我们不需要做Quarze的配置,我们要做的是去继承一个quarze的一个抽象类QuartzJobBean,代表这个是一个Job然后是实现这个抽象类中的方法就是我们具体的工作
这里我们就完成我们上面所讲的一个工作的创建。 创建完一个job后我们是不是要创建一个jobDetail工作明细来绑定我们的工作,再创建一个触发器来绑定工作明细,再由时间调度说明jobDetail和Tigger的关系 这是不是属于一个配置啊。那么我们此时不再配置中配置这些信息了,我们创建一个配置类来让这些bean加载到spring容器中。
这段代码完成后我们就把这些事请都做完了。在这里我要提醒一下特别要注意 ScheduleBuilder schdule=CronScheduleBuilder.cronSchedule("0/5 * * * * ") ; 如何对调度进行配置我上面的代码是每个间隔十五秒执行一次在任意时刻。在上面代码块中有我对这部分有对应的解释。 下面就是开启引导类做一下测试就ok了 下面我们来讲解第三种完成定时任务的技术 其实在springboot中,已经为我们提供了一个完成定时任务的技术。SpringTask这个技术。 它比起Quarze更加的方便。可以使用注解的方式进行。 和Quarze整合一样我们先导入springtask的坐标依赖,但由于这个技术是spring提供的我们不用导入就有这个功能 我们要做的是进行配置
对于 thread-name-prefix 这个配置其实就是给你的任务加个前缀便于区分。和你使用线程一样。 size就是规定线程池的大小。 await-termination: 就是当你将线程关闭时还有任务没有完成是否等待它完成后关闭 await-termination-period: 就是为了防止你的任务是个无限执行的任务,设置一个最大等待时间。 下面要做的事情就是开启我们定时任务的功能。 首先在引导类上使用**@EnableScheduling**注解开启定时任务
在然后我们只要在你要执行的任务上使用**@Scheduled**代表这是一个定时任务
同时在注解中定义调度。和Quarze一样需要配置调度。但是这里是不是比Quarze简单许多 到这里我们使用springtask完成一个定时任务已经完成。 这里出现的同时还有我刚刚使用Quarze技术完成的定时任务 好了这里我们springboot三种完成定时任务的方法已经完成 先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 13:09:44- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |