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

上海网站建设做物流一站酷设计网站官网网址

上海网站建设做物流一,站酷设计网站官网网址,个旧市建设网站,世界杯哪个网站做代理一. 定时任务实现方式 定时任务实现方式#xff1a; Java自带的java.util.Timer类#xff0c;这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行#xff0c;但不能在指定时间运行。一般用的较少#xff0c;这篇文章将不做详细介…一. 定时任务实现方式 定时任务实现方式 Java自带的java.util.Timer类这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行但不能在指定时间运行。一般用的较少这篇文章将不做详细介绍。使用Quartz这是一个功能比较强大的的调度器可以让你的程序在指定时间执行也可以按照某一个频度执行配置起来稍显复杂有空介绍。使用Spring的Scheduled注解配合EnableScheduling一起使用。SpringBoot自带的Scheduled可以将它看成一个轻量级的Quartz而且使用起来比Quartz简单许多本文主要介绍。说明Scheduled 注解用于标注这个方法是一个定时任务的方法有多种配置可选。cron支持cron表达式指定任务在特定时间执行fixedRate以特定频率执行任务fixedRateString以string的形式配置执行频率。 定时任务执行方式 单线程串行多线程并行二. 创建定时任务 2.1、Spring boot中串行调度 在Spring boot中自带了Seheduled实现起来很方便只需要在需要调度的方法上增加注解即可。如下 package com.dxz.demo.schedule; import java.time.LocalDateTime;import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service;Service //EnableScheduling 可以省略 public class PrintJob {Scheduled(initialDelay3000, fixedDelay 10000)public void print() {Thread current Thread.currentThread(); System.out.println(LocalDateTime.now() thread-name: current.getName() : 60 print);} } 结果 2.2、Spring boot中并行调度 继承SchedulingConfigurer类并重写其方法即可如下 package com.dxz.demo.schedule;import java.util.concurrent.Executor; import java.util.concurrent.Executors;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.SchedulingConfigurer; import org.springframework.scheduling.config.ScheduledTaskRegistrar;Configuration EnableScheduling public class ScheduleConfig implements SchedulingConfigurer {Overridepublic void configureTasks(ScheduledTaskRegistrar taskRegistrar) {taskRegistrar.setScheduler(taskExecutor());}Bean(destroyMethod shutdown)public Executor taskExecutor() {return Executors.newScheduledThreadPool(10);} } 结果 多个线程依次按照固定频率来执行调度的。   2.3、Spring boot中异步并行调度   2.4、Spring并行调度 1.新建一个web工程引入spring相关包pom文件如下 project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.dxz.demo/groupIdartifactIdSpringDemo/artifactIdpackagingwar/packagingversion0.0.1-SNAPSHOT/versionnameSpringDemo Maven Webapp/nameurlhttp://maven.apache.org/urldependenciesdependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion4.1.7.RELEASE/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-web/artifactIdversion4.1.6.RELEASE/version/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-webmvc/artifactIdversion4.1.6.RELEASE/version/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion3.8.1/versionscopetest/scope/dependency/dependenciesbuildfinalNameSpringDemo/finalName/build /project spring配置文件 ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:contexthttp://www.springframework.org/schema/contextxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdimport resourceapplicationContext-task.xml /context:component-scan base-packagecom.dxz.demo / /beans?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:contexthttp://www.springframework.org/schema/contextxmlns:taskhttp://www.springframework.org/schema/taskxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsdtask:annotation-driven executortaskExecutorschedulertaskScheduler /task:executor idtaskExecutor pool-size5 /task:scheduler idtaskScheduler pool-size10 / /beans web.xml配置 ?xml version1.0 encodingUTF-8? web-app xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlnshttp://java.sun.com/xml/ns/javaeexsi:schemaLocationhttp://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsdidWebApp_ID version3.0display-nameappversion/display-namecontext-paramparam-namecontextConfigLocation/param-nameparam-valueclasspath:applicationContext.xml/param-value/context-paramlistenerlistener-classorg.springframework.web.context.ContextLoaderListener/listener-class/listener/web-app 调度任务类 package com.dxz.demo;import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component;Component public class HelloWorldTask {Scheduled(fixedRate 5000)public void doSomething() throws Exception {System.out.println(Thread.currentThread().getName() doSomething is invoked!);}Scheduled(fixedDelay 5000)public void doSomething2() throws Exception {System.out.println(Thread.currentThread().getName() doSomething2 is invoked!);} } 工程结构如下 结果 从上图中可以看到时多个线程在执行调度任务的。   三. Scheduled参数说明 initial-delay : 表示第一次运行前需要延迟的时间单位是毫秒fixed-delay : 表示从上一个任务完成到下一个任务开始的间隔, 单位是毫秒。fixed-rate : 表示从上一个任务开始到下一个任务开始的间隔, 单位是毫秒。(如果上一个任务执行超时则可能是上一个任务执行完成后立即启动下一个任务)cron : cron 表达式。(定时执行如果上一次任务执行超时而导致某个定时间隔不能执行则会顺延下一个定时间隔时间。下一个任务和上一个任务的间隔时间不固定) 区别见图 4、局限性——Scheduled的cron无法指定执行的年份   即我们假如使用下面的定时任务 Scheduled(cron 0 18 10 * * ? 2016-2016)public void testTaskWithDate() {logger.info(测试2016.定时任务);}    将会报下面的错误 Cron expression must consist of 6 fields (found 7 in 0 18 10 * * ? 2016-2016) Caused by: java.lang.IllegalStateException: Encountered invalid Scheduled method testTaskWithDate: Cron expression must consist of 6 fields (found 7 in 0 18 10 * * ? 2016-2016)at org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor.processScheduled(ScheduledAnnotationBeanPostProcessor.java:405)at org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor.postProcessAfterInitialization(ScheduledAnnotationBeanPostProcessor.java:258)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:422) 错误原因 /*** Parse the given pattern expression.*/ private void parse(String expression) throws IllegalArgumentException {String[] fields StringUtils.tokenizeToStringArray(expression, );if (fields.length ! 6) {throw new IllegalArgumentException(String.format( cron expression must consist of 6 fields (found %d in %s), fields.length, expression));}   spring taks 不支持年位定时,它毕竟不是quartz,只是简单的定时框架,比起jdk Timer就加入了线程池而以.   但是制定到年份会存在一个问题就是在你在过了这个时间后再启动项目的时候他会一直报一个memory leak的错误大概的意思是你的定时任务将永远不会被执行导致项目一直启动不了。源码里的注释:  *The pattern is a list of six single space-separated fields: representing  * second, minute, hour, day, month, weekday. Month and weekday names can be  * given as the first three letters of the English names. 四、Cron表达式的详细用法 字段 允许值 允许的特殊字符 秒 0-59 , - * / 分 0-59 , - * / 小时 0-23 , - * / 日期 1-31 , - * ? / L W C 月份 1-12 或者 JAN-DEC , - * / 星期 1-7 或者 SUN-SAT , - * ? / L C # 年可选 留空, 1970-2099 , - * /例子0/5 * * * * ? 每5秒执行一次“*”字符被用来指定所有的值。如*在分钟的字段域里表示“每分钟”。 “?”字符只在日期域和星期域中使用。它被用来指定“非明确的值”。当你需要通过在这两个域中的一个来指定一些东西的时候它是有用的。看下面的例子你就会明白。月份中的日期和星期中的日期这两个元素时互斥的一起应该通过设置一个问号来表明不想设置那个字段。“-”字符被用来指定一个范围。如“10-12”在小时域意味着“10点、11点、12点”。“,”字符被用来指定另外的值。如“MON,WED,FRI”在星期域里表示”星期一、星期三、星期五”。“/”字符用于指定增量。如“0/15”在秒域意思是每分钟的01530和45秒。“5/15”在分钟域表示每小时的52035和50。 符号“*”在“/”前面如*/10等价于0在“/”前面如0/10。记住一条本质表达式的每个数值域都是一个有最大值和最小值的集合如 秒域和分钟域的集合是0-59日期域是1-31月份域是1-12。字符“/”可以帮助你在每个字符域中取相应的数值。如“7/6”在月份域的时候只 有当7月的时候才会触发并不是表示每个6月。L是‘last’的省略写法可以表示day-of-month和day-of-week域但在两个字段中的意思不同例如day-of- month域中表示一个月的最后一天。如果在day-of-week域表示‘7’或者‘SAT’如果在day-of-week域中前面加上数字它表示 一个月的最后几天例如‘6L’就表示一个月的最后一个星期五。字符“W”只允许日期域出现。这个字符用于指定日期的最近工作日。例如如果你在日期域中写 “15W”表示这个月15号最近的工作日。所以如果15号是周六则任务会在14号触发。如果15好是周日则任务会在周一也就是16号触发。如果 是在日期域填写“1W”即使1号是周六那么任务也只会在下周一也就是3号触发“W”字符指定的最近工作日是不能够跨月份的。字符“W”只能配合一个 单独的数值使用不能够是一个数字段如1-15W是错误的。“L”和“W”可以在日期域中联合使用LW表示这个月最后一周的工作日。字符“#”只允许在星期域中出现。这个字符用于指定本月的某某天。例如“6#3”表示本月第三周的星期五6表示星期五3表示第三周。“2#1”表示本月第一周的星期一。“4#5”表示第五周的星期三。字符“C”允许在日期域和星期域出现。这个字符依靠一个指定的“日历”。也就是说这个表达式的值依赖于相关的“日历”的计算结果如果没有“日历” 关联则等价于所有包含的“日历”。如日期域是“5C”表示关联“日历”中第一天或者这个月开始的第一天的后5天。星期域是“1C”表示关联“日历” 中第一天或者星期的第一天的后1天也就是周日的后一天周一。 五、表达式举例 0 0 12 * * ? 每天中午12点触发 0 15 10 ? * * 每天上午10:15触发 0 15 10 * * ? 每天上午10:15触发 0 15 10 * * ? * 每天上午10:15触发 0 15 10 * * ? 2005 2005年的每天上午10:15触发 0 * 14 * * ? 在每天下午2点到下午2:59期间的每1分钟触发 0 0/5 14 * * ? 在每天下午2点到下午2:55期间的每5分钟触发 0 0/5 14,18 * * ? 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 0 0-5 14 * * ? 在每天下午2点到下午2:05期间的每1分钟触发 0 10,44 14 ? 3 WED 每年三月的星期三的下午2:10和2:44触发 0 15 10 ? * MON-FRI 周一至周五的上午10:15触发 0 15 10 15 * ? 每月15日上午10:15触发 0 15 10 L * ? 每月最后一日的上午10:15触发 0 15 10 ? * 6L 每月的最后一个星期五上午10:15触发 0 15 10 ? * 6L 2002-2005 2002年至2005年的每月的最后一个星期五上午10:15触发 0 15 10 ? * 6#3 每月的第三个星期五上午10:15触发         常用示例:     0 0 12 * * ?每天12点触发0 15 10 ? * *每天10点15分触发0 15 10 * * ?每天10点15分触发0 15 10 * * ? *每天10点15分触发0 15 10 * * ? 20052005年每天10点15分触发0 * 14 * * ?每天下午的 2点到2点59分每分触发0 0/5 14 * * ?每天下午的 2点到2点59分(整点开始每隔5分触发)0 0/5 14,18 * * ?每天下午的 2点到2点59分、18点到18点59分(整点开始每隔5分触发)0 0-5 14 * * ?每天下午的 2点到2点05分每分触发0 10,44 14 ? 3 WED3月分每周三下午的 2点10分和2点44分触发0 15 10 ? * MON-FRI从周一到周五每天上午的10点15分触发0 15 10 15 * ?每月15号上午10点15分触发0 15 10 L * ?每月最后一天的10点15分触发0 15 10 ? * 6L每月最后一周的星期五的10点15分触发0 15 10 ? * 6L 2002-2005从2002年到2005年每月最后一周的星期五的10点15分触发0 15 10 ? * 6#3每月的第三周的星期五开始触发0 0 12 1/5 * ?每月的第一个中午开始每隔5天触发一次0 11 11 11 11 ?每年的11月11号 11点11分触发(光棍节)参考http://wujq4java.iteye.com/blog/2067214 参考http://blog.csdn.net/applebomb/article/details/52400154转载于:https://www.cnblogs.com/duanxz/p/4876635.html
http://www.zqtcl.cn/news/405092/

相关文章:

  • 寿光企业建站流程个人网站用什么软件
  • 网站建设与管理自考本全国卷wordpress 关闭文章修订
  • 兴义市建设局网站首页网站开发项目实训总结
  • 个人网站空间收费网络软文营销案例
  • 网站开发文件结构组成微网站移交
  • 西安全网优化 西安网站推广网页浏览器缩略词
  • 网站开发及企业推广营销型网站建设怎么收费
  • 网站建设与管理ppt课件百度云盘关键词推广营销
  • c asp.net网站开发书宁波建设业协会网站
  • 政务网站建设发言材料知名互联网公司有哪些
  • 网站搭建制作建e室内设计网画图
  • 重庆市建设工程施工安全管理信息网北京seo公司网站
  • 国外做调查问卷的网站建设邮费自己的网站 要不要购买服务器的
  • 网站建设和优化排名四川建设网官网证书查询入口
  • 如何搜名字搜到自己做的网站电子商务平台icp备案证明
  • 网站建设与管理工作内容北京网站建设价
  • 做网站选哪个语言软文营销的方法
  • 青岛正规公司网站建设公司中国建设银行注册网站
  • 免费个人网站平台关键词检索
  • 定制型网站建设推广宁河网站建设
  • 主流网站开发语言有哪些电子邮件营销
  • 扫描二维码进入公司网站怎样做在万网上域名了怎么做网站
  • 销售型网站设计怎么做网站广告位
  • 网站推广的方法ppt购物网站logo
  • 网站关键词分割wordpress为展示的作品投票
  • 建立网站 域名 服务器吗wordpress超链接出错
  • 外贸开发网站建设注册会计师协会
  • 莆田建设网站dw网页设计作品及源码
  • 360免费建站视频淘宝客的网站怎么做
  • 四川自助seo建站短视频推广计划