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

单体应用spring Task和分布式调度

Spring Task

1.通过 Spring Task,您可以方便地在 Java 应用程序中实现定时任务,比如每天凌晨进行数据同步、每小时执行一次清理操作等。

2.1

启动类添加@EnableScheduling注解(默认情况下,系统会自动启动一个线程)

 2.2

在需要定时执行的方法上添加@Scheduled注解即可。定时执行的方法不能有参数,并且一般没有返回值,即使有返回值也没什么用。注意定时任务所在的类要作为 Spring Bean,在类上添加@Component注解即可。也就是说定时方法所在的类,你要放到IOC容器里面

@Component
@Slf4j //用来查看日志,日志上面精确显示到秒.这需要在properties中加logging....
@EnableAsync //开启多个线程
public class ScheduledTask {int i =1;@Scheduled(fixedRate = 3000)public void task1(){log.debug("task1->{},{}",i++,Thread.currentThread().getId());}@Scheduled(cron = "*/5 * * * * ?")@Async("asyncScheduledPool") //配置类中线程类的类名public void task2(){log.debug("task2->{},{}",Thread.currentThread().getId());}
}

 

 

2.3多线程(异步)定时任务


@Component
public class ExecutorConfig {//定义核心线程数public static final int CORE_POOL_SIZE = 5;//定义最大线程数public static final int MAX_POOL_SIZE = 10;//定义线程活跃时间public static final int KEEP_ALIVE_TIME = 2000;//定义线程队列public static final int BLOCKING_QUEUE_SIZE = 100;
//    @Bean("asyncScheduledPool")public Executor asyncScheduledPool(){//自定义线程池ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();threadPoolTaskExecutor.setCorePoolSize(CORE_POOL_SIZE);threadPoolTaskExecutor.setMaxPoolSize(MAX_POOL_SIZE);threadPoolTaskExecutor.setKeepAliveSeconds(KEEP_ALIVE_TIME);threadPoolTaskExecutor.setQueueCapacity(BLOCKING_QUEUE_SIZE);threadPoolTaskExecutor.setThreadNamePrefix("async-scheduled-pool-");//设置拒绝策略threadPoolTaskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy());return threadPoolTaskExecutor;}}

 

logging.root.level=error
logging.level.com.example=debug

 

开启异步支持

这个Enable...其实写在哪个类中都行

Api说明

fixedDelay :上次结束到下次开始执行时间间隔:

@Scheduled(fixedDelay = 4000)

fixedRate:上一次开始执行时间和下次开始时间间隔10s。如:

@Scheduled(fixedRate = 10000)

 initialDelay:第一次延迟多长时间后再执行。

@Scheduled(initialDelay=1000, fixedRate=5000) //第一次延迟1秒后执行,之后按fixedRate的规则每5秒执行一次

cron(掌握)

@Scheduled(cron = "*/5 * * * * ?")

在线Cron表达式生成器

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • CDN劫持总结
  • MK米客方德推出新一代工业级SD NAND——更长寿命、更高速度、更优功耗
  • 白骑士的C#教学实战项目篇 4.1 控制台应用程序
  • 凹凸纹理概念
  • 定长滑动窗口算法
  • 【SQL】科目种类
  • 10个创意提示:让你的内容焕然一新!
  • NVDLA专题11:具体模块介绍——CROSS Channel Data Processor
  • 2024新型数字政府综合解决方案(六)
  • 【Qt】内置对话框
  • PTA求简单交错序列前N项和
  • CSS的:host伪类:精粹自定义Web组件选择艺术
  • 【1.0】vue3的创建
  • 检测到目标URL存在http host头攻击漏洞
  • 智能电梯标志新时代:墨水屏电子标签引领变革
  • ➹使用webpack配置多页面应用(MPA)
  • CentOS6 编译安装 redis-3.2.3
  • css的样式优先级
  • httpie使用详解
  • js
  • js如何打印object对象
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • maya建模与骨骼动画快速实现人工鱼
  • Node 版本管理
  • php的插入排序,通过双层for循环
  • python 装饰器(一)
  • RxJS: 简单入门
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 好的网址,关于.net 4.0 ,vs 2010
  • 聚簇索引和非聚簇索引
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 深度学习中的信息论知识详解
  • 智能合约开发环境搭建及Hello World合约
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​secrets --- 生成管理密码的安全随机数​
  • #13 yum、编译安装与sed命令的使用
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (k8s)Kubernetes 从0到1容器编排之旅
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (蓝桥杯每日一题)love
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (转)EXC_BREAKPOINT僵尸错误
  • *上位机的定义
  • .NET Core 成都线下面基会拉开序幕
  • .net mvc 获取url中controller和action
  • .NET 使用 XPath 来读写 XML 文件
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • //解决validator验证插件多个name相同只验证第一的问题
  • :=
  • @modelattribute注解用postman测试怎么传参_接口测试之问题挖掘
  • @ohos.systemParameterEnhance系统参数接口调用:控制设备硬件(执行shell命令方式)
  • @Transient注解