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

成都筑巢网站建设中卫网站推广外包服务

成都筑巢网站建设,中卫网站推广外包服务,建设银行临江支行网站,购物商城网站源码玩转SpringBoot之定时任务详解 https://www.cnblogs.com/mmzs/p/10161936.html 玩转SpringBoot之定时任务详解 阅读目录#xff1a; 序言一、静态#xff1a;基于注解二、动态#xff1a;基于接口三、多线程定时任务阅读正文#xff1a; 回到顶部 序言 使用SpringBoot创…  玩转SpringBoot之定时任务详解 https://www.cnblogs.com/mmzs/p/10161936.html 玩转SpringBoot之定时任务详解 阅读目录 序言一、静态基于注解二、动态基于接口三、多线程定时任务阅读正文 回到顶部 序言 使用SpringBoot创建定时任务非常简单目前主要有以下三种创建方式 一、基于注解(Scheduled)二、基于接口SchedulingConfigurer 前者相信大家都很熟悉但是实际使用中我们往往想从数据库中读取指定时间来动态执行定时任务这时候基于接口的定时任务就派上用场了。三、基于注解设定多线程定时任务 回到顶部 一、静态基于注解 基于注解Scheduled默认为单线程开启多个任务时任务的执行时机会受上一个任务执行时间的影响。 1、创建定时器 使用SpringBoot基于注解来创建定时任务非常简单只需几行代码便可完成。 代码如下 Configuration //1.主要用于标记配置类兼备Component的效果。 EnableScheduling // 2.开启定时任务 public class SaticScheduleTask {//3.添加定时任务Scheduled(cron 0/5 * * * * ?)//或直接指定时间间隔例如5秒//Scheduled(fixedRate5000)private void configureTasks() {System.err.println(执行静态定时任务时间: LocalDateTime.now());} } Cron表达式参数分别表示 秒0~59 例如0/5表示每5秒分0~59时0~23日0~31的某天需计算月0~11周几 可填1-7 或 SUN/MON/TUE/WED/THU/FRI/SAT Scheduled除了支持灵活的参数表达式cron之外还支持简单的延时操作例如 fixedDelay fixedRate 填写相应的毫秒数即可。 2、启动测试 启动应用可以看到控制台打印出如下信息 显然使用Scheduled 注解很方便但缺点是当我们调整了执行周期的时候需要重启应用才能生效这多少有些不方便。为了达到实时生效的效果可以使用接口来完成定时任务。 回到顶部 二、动态基于接口 基于接口SchedulingConfigurer 1、导入依赖包 parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactIdversion2.0.4.RELEASE/version/parentdependenciesdependency!--添加Web依赖 --groupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependency!--添加MySql依赖 --groupIdmysql/groupIdartifactIdmysql-connector-java/artifactId/dependencydependency!--添加Mybatis依赖 配置mybatis的一些初始化的东西--groupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion1.3.1/version/dependencydependency!-- 添加mybatis依赖 --groupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.4.5/versionscopecompile/scope/dependency/dependencies 2、添加数据库记录 开启本地数据库mysql随便打开查询窗口然后执行脚本内容如下 DROP DATABASE IF EXISTS socks; CREATE DATABASE socks; USE SOCKS; DROP TABLE IF EXISTS cron; CREATE TABLE cron (cron_id varchar(30) NOT NULL PRIMARY KEY,cron varchar(30) NOT NULL ); INSERT INTO cron VALUES (1, 0/5 * * * * ?); 然后在项目中的application.yml 添加数据源 spring:datasource:url: jdbc:mysql://localhost:3306/socksusername: rootpassword: 123456 3、创建定时器 数据库准备好数据之后我们编写定时任务注意这里添加的是TriggerTask目的是循环读取我们在数据库设置好的执行周期以及执行相关定时任务的内容。 具体代码如下 Configuration //1.主要用于标记配置类兼备Component的效果。 EnableScheduling // 2.开启定时任务 public class DynamicScheduleTask implements SchedulingConfigurer {Mapperpublic interface CronMapper {Select(select cron from cron limit 1)public String getCron();}Autowired //注入mapperSuppressWarnings(all)CronMapper cronMapper;/*** 执行定时任务.*/Overridepublic void configureTasks(ScheduledTaskRegistrar taskRegistrar) {taskRegistrar.addTriggerTask(//1.添加任务内容(Runnable)() - System.out.println(执行动态定时任务: LocalDateTime.now().toLocalTime()),//2.设置执行周期(Trigger)triggerContext - {//2.1 从数据库获取执行周期String cron cronMapper.getCron();//2.2 合法性校验.if (StringUtils.isEmpty(cron)) {// Omitted Code ..}//2.3 返回执行周期(Date)return new CronTrigger(cron).nextExecutionTime(triggerContext);});}} 4、启动测试 启动应用后查看控制台打印时间是我们预期的每10秒一次 然后打开Navicat 将执行周期修改为每6秒执行一次如图 查看控制台发现执行周期已经改变并且不需要我们重启应用十分方便。如图 注意 如果在数据库修改时格式出现错误则定时任务会停止即使重新修改正确此时只能重新启动项目才能恢复。 回到顶部 三、多线程定时任务 基于注解设定多线程定时任务 1、创建多线程定时任务 //Component注解用于对那些比较中立的类进行注释 //相对与在持久层、业务层和控制层分别采用 Repository、Service 和 Controller 对分层中的类进行注释 Component EnableScheduling // 1.开启定时任务 EnableAsync // 2.开启多线程 public class MultithreadScheduleTask {AsyncScheduled(fixedDelay 1000) //间隔1秒public void first() throws InterruptedException {System.out.println(第一个定时任务开始 : LocalDateTime.now().toLocalTime() \r\n线程 : Thread.currentThread().getName());System.out.println();Thread.sleep(1000 * 10);}AsyncScheduled(fixedDelay 2000)public void second() {System.out.println(第二个定时任务开始 : LocalDateTime.now().toLocalTime() \r\n线程 : Thread.currentThread().getName());System.out.println();}} 注 这里的Async注解很关键 2、启动测试 启动应用后查看控制台 从控制台可以看出第一个定时任务和第二个定时任务互不影响 并且由于开启了多线程第一个任务的执行时间也不受其本身执行时间的限制所以需要注意可能会出现重复操作导致数据异常。 代码地址https://github.com/mmzsblog/springboot-schedule 原文链接https://www.mmzsblog.cn/articles/2019/08/08/1565247960802.html
http://wiki.neutronadmin.com/news/150433/

相关文章:

  • 深圳网站建设价格百度推广的渠道有哪些
  • 合肥市科技中心网站国家食品查询网入口
  • 化妆品企业网站案例大全wordpress 更改编辑器
  • 不备案怎么做淘宝客网站wordpress 微博链接
  • 重庆住房城乡建设部网站wordpress空俩格
  • 洛阳做网站哪家专业欧美网站设计特点
  • 南山网站开发珠海网站建设方案报价
  • 建站用哪个模板好wordpress安全权限
  • 做京东网站的摘要智联招聘网站怎么做微招聘信息
  • 做搜索引擎网站人才网招聘找工作
  • 做网站模版与定制的区别浦东医院网站建设
  • 电子商务网站建设的步骤一般福州门户网站建设
  • 装修网站平台推荐佛山新网站制作代理商
  • 查外链网站怎么自己学做电商
  • centos7 wordpress网站购物网站开发项目意义
  • 做puzzle的网站免费数据查询网站
  • 惠州公司网站建设vue网站开发
  • 丽水微信网站建设公司python3 做网站
  • 恋爱网站建设浙江网站建设价格
  • 罗永浩做的网站公众号开发哪家专业
  • 管理网站开发教程js下载服务器wordpress
  • 网站开发需求问卷学校网站建设及使用档案
  • 高端网站建设要多少钱有哪些网站做的很有特色
  • 自己建网站做电商还赚钱吗成都代做网站
  • 什么网站做电脑系统好门户网站建设 工具
  • 专业网站设计公司排名保定市网站建设
  • 网站建设协议 模板下载网站关键词先后
  • 深圳网站建设 设计首选遂宁网站建设公司哪家好
  • 官方网站minecraft制作书签教案
  • 佛山企业网站建设公司推荐丹东做网站