当前位置: 首页 > wzjs >正文

网站建设制作设计公司cba最新消息

网站建设制作设计公司,cba最新消息,百度云 做网站,苏州网站设计价格文章目录 一、Quartz核心组件及相互关系二、代码案例三、总结 一、Quartz核心组件及相互关系 pom <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId></dependency>1、Job&am…

文章目录

  • 一、Quartz核心组件及相互关系
  • 二、代码案例
  • 三、总结

一、Quartz核心组件及相互关系

pom

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId></dependency>

1、Job:任务。
2、JobDetail:任务详情。
3、Trigger:触发器 主要是cron的定义。
4、Scheduler:调度器 整合Job和Trigger,进行任务执行。

相互关系
Job:JobDetail -> 1:N
JobDetail:Trigger -> 1:N
Trigger:JobDetail -> 1:1

在这里插入图片描述

二、代码案例

1、创建Job类

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;public class MyJob implements Job {@Overridepublic void execute(JobExecutionContext context) throws JobExecutionException {JobDetail jobDetail1 = context.getJobDetail();System.out.println("任务名称:"+jobDetail1.getKey().getName());System.out.println("任务组信息:"+jobDetail1.getKey().getGroup());System.out.println("任务类信息:"+jobDetail1.getJobClass().getName());System.out.println("本次执行时间:"+context.getFireTime());System.out.println("下次执行时间:"+context.getNextFireTime());//获取jobtail里面设置的共享数据JobDataMap jobDataMap = jobDetail1.getJobDataMap();Integer count = (Integer) jobDataMap.get("count");System.out.println("第"+count+"次执行");jobDataMap.put("count",++count);	//将最新数据放回}
}

2、创建JobDetail类
在config配置类中,创建

import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class QuartzConfig {@Beanpublic JobDetail jobDetail1(){return JobBuilder.newJob(MyJob.class)	//关联上一步的Job	.withIdentity("job1","group1")	//唯一标识.storeDurably()		//持久化.usingJobData("count",1)	//		共享数据初始化.build();}
}

3、创建Trigger
在config配置类中,创建

	@Beanpublic Trigger trigger1(){//cron表达式String cronStr = "0/2 * * * * ? *";return TriggerBuilder.newTrigger().withIdentity("trigger1","group1")		//设置唯一标识.forJob(jobDetail1())		//关联创建的JobDetail.withSchedule(CronScheduleBuilder.cronSchedule(cronStr))		//设置cron.build();}

4、Scheduler无需手动创建,springboot自行管理
5、运行application,测试效果
在这里插入图片描述
发现,基本信息都正确
但是,共享数据,总是第1次。
6、解决共享数据问题
原因分析:从context中获取的jobDetail每次都是一个新的实例。
所以,jobDetail中的数据会被重置。

		JobDetail jobDetail1 = context.getJobDetail();System.out.println(System.identityHashCode(jobDetail1));

在这里插入图片描述
解决办法:
给job类,添加注解:@PersistJobDataAfterExecution
在这里插入图片描述
在这里插入图片描述

7、任务并发问题
问题描述:
就是当前任务还没有完成时,又到了任务下一次执行的时间
这样,执行任务时间上就重叠了,也就是任务并发了。
可能导致数据错乱问题。
注意:这个与并发编程不是一个问题。

现象:
在这里插入图片描述

解决办法:
给job类,添加注解:@DisallowConcurrentExecution
在这里插入图片描述
执行:
会发现,不在是2秒执行一次,是等当前任务执行完,立即执行下一次任务。所以时间间隔变成了3秒一次。
在这里插入图片描述

三、总结

整体的开发思路就是
先写Job类
然后,在config配置类中,通过spring容器,注入jobDetail和trigger

http://www.dtcms.com/wzjs/166676.html

相关文章:

  • 神一般的网页设计网站在线优化网站
  • 织梦复制网站模板市场营销方案范文5篇
  • 南京专业网站设计公司关键少数
  • 网页制作与网站制作整站优化深圳
  • 宁波海曙网站开发公司软文案例200字
  • 网站如何做业务疫情放开最新消息今天
  • 网站做快照怎么做俄罗斯搜索引擎入口
  • 济南企业网站建设网站快速建站
  • 南宁做网站的公司有哪些新东方在线koolearn
  • 往网站添加图片吗谷歌paypal下载
  • 做照片的网站有哪些班级优化大师的功能
  • 南冒网站建设制作推广公司指数型基金
  • php手机网站制作今天的新闻 联播最新消息
  • 网站设计中的日历怎么做标题优化seo
  • 武汉做网站代运营平台seo网站自动推广
  • 如何提高网站的收录百度帐号登录
  • ps做网站字体大小kol合作推广
  • 网站站点管理在哪里网站策划书怎么写
  • 做海报的素材哪个网站百度关键词推广价格查询
  • 税务网站做新办户登记seo建站教学
  • 眼科医院网站优化服务商淘宝关键词搜索排名
  • 网上平台苏州网站优化排名推广
  • 电子商务网站建设商城网站亚马逊关键词搜索工具
  • 长沙专业网站设计平台怎么学seo基础
  • 网站后端架构如何做产品如何做市场推广
  • 做资料网站违法最新黑帽seo培训
  • 网站活动怎么做网站一级域名和二级域名区别
  • 保定网站设计奉化网站关键词优化费用
  • wordpress ajax请求靠谱seo外包定制
  • 做网站需要nba表格佛山抖音seo