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

springboot 定时任务解决方案

@Scheduled (springboot 自带的 注解)

基于注解@Scheduled默认为单线程,开启多个任务时,任务的执行时机会受上一个任务执行时间的影响。

@EnableScheduling注解: 在配置类上使用,开启计划任务的支持(类上)。

@Scheduled注解: 来声明这是一个任务,包括 cron (可通过在线生成Cron表达式的工具:网址http://cron.qqe2.com/ 来生成自己想要的表达式。),fixDelay,fixRate 等类型(方法上,需先开启计划任务的支持)。

@Slf4j
@Configuration
public class TastOne {// 可以从IOC容器中获取到对应的Service@Autowiredprivate TestService testService;@Scheduled(cron = "0/1 * * * * ?")public void out(){log.info("正在执行定时任务输出方法..............");}
}

开启多线程


private final int corePoolSize = Runtime.getRuntime().availableProcessors();
/*** 此处方法名为Bean的名字,方法名无需固定* 因为是按TaskScheduler接口自动注入*/
@Bean
public TaskScheduler taskScheduler(){// Spring提供的定时任务线程池类ThreadPoolTaskScheduler taskScheduler=new ThreadPoolTaskScheduler();//设定最大可用的线程数目taskScheduler.setPoolSize(corePoolSize);return taskScheduler;
}

注意 禁止 启动类加@EnableAsync,Scheduled加@Async 这么使用

原因:@Async的使用场景和这个不同,用在这里并不合适,虽然也会实现多线程,但是会产生任务重复执行的问题,也会使 fixedDelay策略失效。 ​

参考 spring 注解实现定时任务详解

xxl-job框架

在实际项目中,90%都是用的XXL-JOB,因为它易用性最好。
xxl-job官网

待续…

定时任务放线程池
spring task实现

springboot 注解形式

http://www.lryc.cn/news/349808.html

相关文章:

  • 谷粒商城实战(024 业务-订单模块-分布式事务1)
  • .NET使用Microsoft.IdentityModel.Tokens对SAML2.0登录断言校验
  • 性能测试学习二
  • 小丑的身份证和复印件 (BFS + Floyd)
  • C++类与对象(上)
  • Exchanger的 常用场景及使用示例
  • Spring AI项目Open AI对话接口开发指导
  • 决策规划仿真平台的搭建
  • RustGUI学习(iced/iced_aw)之扩展小部件(十八):如何使用badge部件来凸显UI元素?
  • 触摸播放视频,并用iframe实现播放外站视频
  • 接口自动化-requests库
  • 队列的实现与OJ题目解析
  • 中北大学软件学院javaweb实验三JSP+JDBC综合实训(一)__数据库记录的增加、查询
  • 高通QCS6490开发(一): 广翼智联FV01 AI板卡简介
  • 【知识拓展】大白话说清楚:IP地址、子网掩码、网关、DNS等
  • Java 高级面试问题及答案2
  • 2024年网络安全威胁
  • 应用层之 HTTP 协议
  • 解决Word文档中页眉有部分有,有部分没有的问题
  • Python爬虫基础知识学习(以爬取某二手房数据、某博数据与某红薯(书)评论数据为例)
  • JavaScript-输入输出语句
  • peft+llama3训练自定义数据
  • vue+ts+vite+pinia+less+echarts 前端可视化 实战项目
  • 文心一言指令多样化,你知道的有哪些?
  • QT状态机8-使用恢复策略自动恢复属性
  • 第83天: 代码审计-PHP 项目RCE 安全调试追踪代码执行命令执行
  • 学习Uni-app开发小程序Day8
  • OpenHarmony标准设备应用开发(二)——布局、动画与音乐
  • mysql字段乱序 information_schema
  • 使用php和redis实现分布式锁