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

网站目录管理模板3d网站建设

网站目录管理模板,3d网站建设,桂林紧急通知,php 信息分类网站开发Spring Task 这篇笔记#xff0c;我们要来介绍实现Java定时任务的第四个方案#xff0c;使用Spring Task#xff0c;以及该方案的优点和缺点。 ​ Spring Task是Spring框架提供的一个轻量级任务调度框架#xff0c;用于简化任务调度的开放#xff0c;通过注解或XML配置的…Spring Task 这篇笔记我们要来介绍实现Java定时任务的第四个方案使用Spring Task以及该方案的优点和缺点。 ​ Spring Task是Spring框架提供的一个轻量级任务调度框架用于简化任务调度的开放通过注解或XML配置的方式可以轻松实现定时任务、异步任务等功能我们这里主要介绍它的定时任务。 使用 1.添加依赖 ​ 既然要使用Spring框架提供的SpringTask我们就要引入相关的依赖同时我们后面要通过自定义注解AOP的方式实现任务监听所以也要引入SpringAop的相关依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactIdversion3.3.0/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactIdversion3.3.0/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-aop/artifactIdversion3.3.0/version/dependency2.启用定时任务支持 ​ 要使用SpringTask实现定时任务我们首先要启用定时任务支持这个我们只需要在Spring应用的启动类上加上EnableScheduling就可以了。 SpringBootApplication EnableScheduling public class Application {public static void main(String[] args) {SpringApplication.run(Application.class,args);} }3.配置定时任务注册器 ​ 我们可以通过配置类对SpringTask执行定时任务的调度器进行相关的配置和初始化并注册到Spring容器中便于统一管理调度任务。 Configuration EnableScheduling public class SchedulingConfig implements SchedulingConfigurer {/*** 配置定时任务处理方式** param taskRegistrar 定时任务注册器用于管理和调度定时任务*/Overridepublic void configureTasks(ScheduledTaskRegistrar taskRegistrar) {// 创建一个线程池任务调度器ThreadPoolTaskScheduler taskScheduler new ThreadPoolTaskScheduler();//设置线程池大小taskScheduler.setPoolSize(10);// 设置线程名称前缀便于识别和管理taskScheduler.setThreadNamePrefix(perform-);// 初始化线程池任务调度器taskScheduler.initialize();// 将任务调度器设置到定时任务注册器中以便统一管理调度任务taskRegistrar.setTaskScheduler(taskScheduler);} }4.创建定时任务 ​ 接着我们就可以编写定时任务了这里我们采用注解的形式提供示例。只需要在外面的定时方法上面加上一个Scheduled注解Spring容器就可以帮我们实现定时任务了。这个Scheduled注解可以设置一些参数便于更灵活的调度任务例如fixedRate参数可以让我们设置间隔多长时间执行一次、initialDelay参数可以设置第一次执行任务前延迟的时间fixedDelay参数也可以设置每一次延迟多长时间再执行定时任务。同时该注解还支持使用cron表达式来灵活的设置任务调度的方式。 Component ConditionalOnProperty(prefix scheduled,name task.enabled,havingValue true)//条件注解控制定时任务的启用和禁用 public class ScheduledTask {/*** 每5s执行一次*/Scheduled(fixedRate 5000)TaskListenerpublic void performTask1(){System.out.println(getTime()执行定时任务1);}/*** 每分钟的第10s执行一次*/Scheduled(cron 10 * * * * ?)TaskListenerpublic void performTask2(){System.out.println(getTime()执行定时任务2);}/*** 第一次执行任务前的延迟时间1s,后面每隔5s执行一次*/Scheduled(initialDelay 1000,fixedDelay 5000)TaskListenerpublic void performTask3(){System.out.println(getTime()执行定时任务3);}/*** 获取当前系统时间* return*/public static String getTime(){//获取当前的系统时间LocalDateTime now LocalDateTime.now();//定义时间格式DateTimeFormatter formatter DateTimeFormatter.ofPattern(yyyy-MM-dd HH:mm:ss);//格式化时间return now.format(formatter);} }​ 这里需要补充的是我们可以使用条件注解来控制定时任务的启动或禁止。 scheduled:task:enabled: true补充知识点:cron表达式 ​ cron表达式是一种用于指定定时任务执行时间的字符串格式广泛用于Linux系统的cron作业调度器以及各种编程框架中。 ​ 一个标准的CRON表达式由6个或7个字段组成(取决于是否包含年份字段)各字段之间用空格分隔:[秒] [分钟] [小时] [日期] [月份] [星期] [年份] (可选) ​ 各字段的取值范围如下: 字段范围秒0-59分钟0-59小时0-23日期1-31月份1-12或JAN-DEC星期0-7或SUN-SAT(0和7都表示星期日)年份(可选)1970-2099 ​ 常见符号说明: 符号含义*表示该字段的所有可能值例如*在分钟字段表示每分钟,分隔多个具体的值例如1,15表示第1分钟和第15分钟-定义一个值范围例如10-15表示从第10分钟到第15分钟/指定增量例如*/5表示每隔5个单位执行一次?用于日期或星期字段表示不指定明确的值通常用于其中一个字段时另一个字段有具体值L表示最后一天或最后一个工作日例如L在日期字段表示每月最后一天。W表示最近的工作日例如15W表示离15号最近的工作日#用于星期字段表示某个月的第几个星期几例如2#3表示每月的第三个星期二 ​ 注意:cron表达式的星期和日期不能同时为具体的值如果同时指定具体的值可能会导致逻辑冲突或不明确的行为。 ​ 示例: cron表达式含义0 30 * * * ?每小时第30分钟执行0 0 2 * * ?每天凌晨2点执行0 0 8 ? * MON每周一的上午8点执行0 0 0 L * ?每月的最后一天的午夜执行0 0/5 * * * ?每5分钟执行一次 5.通过自定义注解AOP实现任务监听(可选) ​ 如果需要对定时任务进行监听并做出其他相应的处理的话我们还可以自己通过自定义注解AOP的方式实现任务监听器来进行监听处理。 Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) public interface TaskListener { }Component Aspect public class TaskListenerAspect {Before(annotation(xiaoxin.Timer.SpringTask.TaskListener))public void beforeTask(JoinPoint joinPoint){System.out.println(task:joinPoint.getSignature().getName() 即将开始...);}After(annotation(xiaoxin.Timer.SpringTask.TaskListener))public void afterTask(JoinPoint joinPoint){System.out.println(task:joinPoint.getSignature().getName() 已结束...);} }优点 1.简单易用 ​ Spring Task提供了非常简洁的API通过Scheduled注解即可轻松定义定时任务无需复杂的配置对于简单的定时任务需求开发者可以快速上手并实现。 2.集成方便 ​ Spring Task与Spring框架无缝集成可以直接利用Spring的依赖注入、事务管理等功能可以直接在Spring容器管理的Bean中定义定时任务方法减少额外的配置和代码量。 3.灵活性高 ​ Spring Task支持多种调度方式包括固定延迟(fixedDelay)、固定速率(fixedRate)以及cron表达式可以根据实际需求灵活选择。还可以结合AOP和自定义注解添加日志记录和性能监控增添定时任务的功能。 4.轻量级 ​ Spring Task不需要引入额外的重量级调度框架(如Quartz)适合中小型项目或对调度功能要求不高的场景减少了项目依赖的复杂度和维护成本。 5.线程池支持 ​ Spring Task内置线程池支持可以通过配置文件或Java配置类调整线程池大小优化任务执行效率适用与并发执行多个定时任务的场景确保任务不会因为线程资源不足而阻塞。 6.易于测试 ​ 定时任务方法是普通的Java方法可以通过单元测试工具进行测试。 缺点 1.调度精度有限 ​ Spring Task 的调度依赖于JVM线程调度器因此在高并发或系统负载较高的情况下可能会出现调度延迟对于需要极高精度的任务(如毫秒级)Spring Task可能无法满足需求。 2.缺乏分布式支持 ​ Spring Task本身不支持分布式调度如果应用程序部署在多个节点上每个节点都会独立执行定时任务可能导致任务重复执行因此需要额外引入分布式锁机制(如Redis、数据库等)来确保任务只在一个节点上执行。 3.配置灵活性不足 ​ 虽然Spring Task可以通过cron表达式实现复杂的调度逻辑但对于更复杂的调度需求(如动态调整任务执行时间)Spring Task 的配置显得不够灵活动态修改任务调度规则时通常需要重启应用或手动触发重新加载配置。 4.错误处理和重试机制较弱 ​ Spring Task没有内置的任务失败重试机制如果任务执行过程中发生异常默认情况下不会自动重试需要开发者自行实现错误处理和重试逻辑增加了开发的复杂度。 5.监控和管理功能较弱 ​ Spring Task缺乏内置的任务监控和管理功能难以实时查看任务的执行状态和历史记录等信息。 6.线程池配置复杂 ​ 默认情况下Spring Task使用的是单一线程池对于大量任务或长时间运行的任务可能会导致阻塞需要手动配置线程池参数(如核心线程数、最大线程数、队列大小等)并根据实际业务需要进行调优。
http://www.hkea.cn/news/14374213/

相关文章:

  • 上海的做网站的公司上海十佳装修公司排名
  • 用摄像头直播网站怎么做优秀网页设计教程
  • 网站模板如何使用 如何修改吗写作兼职网站
  • 做电气设计有哪些好的网站大同市建设工程招标投标网站
  • 自己做的网站在浏览器上显示不安全吗网站如何接广告赚钱
  • 谁可以教我做网站12306网站开发
  • wordpress建站事例广州海珠网站开发方案
  • 知名高端网站建设企业建一个网页需要多少钱
  • 网站制作企wordpress添加访问人数
  • 网站建设公司薪资笑话小网站模板html
  • 筑建网站首页wordpress网站换字体
  • 网站运营和管理设计不错的网站
  • 重庆市特种作业证报名seo代码优化
  • 在线制作网站的工具wordpress 仪表盘网址
  • 网站开发需要提供哪些资料网站下载地址
  • 上海的设计网站买空间服务器做网站怎么弄
  • 浏览器怎么打开网站服务器连接58同城推广能免费做网站吗
  • 专业3合1网站建设电话同城的网站建设
  • 荣成信用建设网站小程序开发源码
  • 泊头建网站模仿网站怎么做
  • 湘潭免费网站建设阿里云网站建设和部署框架
  • 免费ppt模板素材网站有哪些长沙公司网络推广
  • 虚拟主机网站怎么上传文件双桥集团网站建设
  • 做门户网站有前途吗东莞做网站优化哪家好
  • 超链接网站建设做资源教程网站
  • 黑龙江企业网站建设公司网站开发课程设计参考文献
  • 重庆建设工程交易中心网站wordpress 加载中
  • seo网站推广方式金乡做网站
  • 厦门市建设局查询保障摇号网站首页上市设计公司网站
  • 定襄网站建设网站建设 中企动力 东莞