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

Spring的@Scheduled

Spring的@Scheduled的默认线程池数量为1,也就是说定时任务是单线程执行的。这意味着最多同时只有一个任务在执行。当一个任务还在执行时,其他任务会等待其完成,然后按照其预定的执行策略依次执行。

测试代码:

启动类上加注解@EnableScheduling开启任务调度功能,具体任务调度代码如下:

@Slf4j
@Component
public class Scheduler {// 每两秒执行一次@Scheduled(fixedRate = 2000)public void mockMethod1() {long threadId = Thread.currentThread().getId();String threadName = Thread.currentThread().getName();log.info("mockMethod1 start with current thread id: {}, name: {}", threadId, threadName);try {Thread.sleep(10000);} catch (InterruptedException e) {e.printStackTrace();}log.info("mockMethod1 end with current thread id: {}, name: {}", threadId, threadName);}@Scheduled(fixedRate = 2000)public void mockMethod2() {long threadId = Thread.currentThread().getId();String threadName = Thread.currentThread().getName();log.info("mockMethod2 start with current thread id: {}, name: {}", threadId, threadName);try {Thread.sleep(10000);} catch (InterruptedException e) {e.printStackTrace();}log.info("mockMethod2 end with current thread id: {}, name: {}", threadId, threadName);}}

结果:可以看到mockMethod1执行完才会执行mockMethod2,而且是单线程执行
在这里插入图片描述

源码

在这里插入图片描述

Spring的@Scheduled有个特点就是,确保任务执行完毕后才会再次调度下一次执行

想要同时执行多个Scheduled,怎么办?

解决

1.当如果有程序有多个任务的话需要修改配置,让其变为多线程执行,这种配置不会破坏Scheduled的特点

# 设置任务调度线程名称前缀
spring.task.scheduling.thread-name-prefix=task-schedule-
# 设置任务调度线程池大小
spring.task.scheduling.pool.size=10
# 设置任务调度线程池关闭时等待所有任务完成
spring.task.scheduling.shutdown.await-termination=true

结果
在这里插入图片描述
2.使用@Async配置线程池,这种配置会破坏Scheduled的特点

启动类上加注解@EnableAsync开启异步功能,然后配置线程池

@Configuration
public class AppConfig {@Bean("taskExecutor")public ThreadPoolTaskExecutor taskExecutor() {ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();executor.setCorePoolSize(6); // 设置核心线程数executor.setMaxPoolSize(9); // 设置最大线程数executor.setQueueCapacity(25); // 设置任务队列容量executor.setThreadNamePrefix("executor-");return executor;}
}

代码上加上异步

@Async("taskExecutor")
@Scheduled(fixedRate = 2000)
public void mockMethod1() {long threadId = Thread.currentThread().getId();String threadName = Thread.currentThread().getName();log.info("mockMethod1 start with current thread id: {}, name: {}", threadId, threadName);try {Thread.sleep(10000);} catch (InterruptedException e) {e.printStackTrace();}log.info("mockMethod1 end with current thread id: {}, name: {}", threadId, threadName);
}

结果
在这里插入图片描述

相关文章:

Spring的@Scheduled

Spring的Scheduled的默认线程池数量为1,也就是说定时任务是单线程执行的。这意味着最多同时只有一个任务在执行。当一个任务还在执行时,其他任务会等待其完成,然后按照其预定的执行策略依次执行。 测试代码: 启动类上加注解Enab…...

IP隧道技术原理

简介 IP隧道技术是一种将一个协议的数据包封装在另一个协议的数据包中进行传输的技术。在网络通信中,不同的网络协议之间可能存在不兼容的情况,这时候就需要使用IP隧道技术来解决这个问题。 原理 IP隧道技术的原理是将一个协议的数据包封装在另一个协议…...

Docker私有仓库

Docker私有仓库 Docker官方的Docker hub(https://hub.docker.com)是一个用于管理公共镜像的仓库,我们可以从上面拉取镜像到本地,也可以把我们自己的镜像推送上去。但是,有时候我们的服务器无法访问互联网,…...

LLM微调 | Prefix-Tuning, Prompt-Tuning, P-tuning, P-tuning-v2

🔥 下面我只是分析讲解下这些方法的原理以及具体代码是怎么实现的,不对效果进行评价,毕竟不同任务不同数据集效果差别还是挺大的。 文章目录 0、hard prompt & soft prompt区别1、Prefix-Tuning2、Prompt-Tuning3、P-tuning4、P-tuning-v25、来看看adapter,lora,pref…...

Ansible 的脚本 --- playbook 剧本

目录 playbook 剧本 playbooks 本身由以下各部分组成 定义、引用变量 指定远程主机sudo切换用户 when条件判断 迭代 Templates 模块 1.先准备一个以 .j2 为后缀的 template 模板文件,设置引用的变量 2.修改主机清单文件,使用主机变量定义一个变…...

CSP-J模拟赛 / 买文具

限制条件 时间限制: 1000 ms, 空间限制: 256 MB 输入文件: pen.in, 输出文件:pen.out 题目描述 开学啦,为了准备新学期的课程学习,小贝到商店买文具。小贝买完文具回家,告诉妈妈说她买了钢笔、圆珠笔和铅笔总共x支&#xff0c…...

leecode算法--每日一题1

二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 前提条件必须满足: 目标数组必须是有序数组 所以…...

LViT:语言与视觉Transformer在医学图像分割

论文链接:https://arxiv.org/abs/2206.14718 代码链接:GitHub - HUANGLIZI/LViT: This repo is the official implementation of "LViT: Language meets Vision Transformer in Medical Image Segmentation" (IEEE Transactions on Medical I…...

蓝桥杯上岸每日N题 第五期(山)!!!

蓝桥杯上岸每日N题第五期 ❗️ ❗️ ❗️ 同步收录 👇 蓝桥杯Java 省赛B组(初赛)填空题 大家好 我是寸铁💪 冲刺蓝桥杯省一模板大全来啦 🔥 蓝桥杯4月8号就要开始了 🙏 距离蓝桥杯省赛倒数第3天 ❗️ ❗️ ❗️ 还没背熟模…...

IDEA Writing classes... 比较慢

IDEA配置修改如下: 1、File -> Settings… 2、Build,Execution,Deployment -> Compiler Build process heap size 配置为 20483、Build,Execution,Deployment -> Compiler -> ActionScript & Flex C…...

opencv中轮廓相关属性

一、介绍 findContours() :The function retrieves contours from the binary image。 二、代码 void main() {Mat src imread("match00.bmp", IMREAD_GRAYSCALE);Mat mask;threshold(src, mask, 128, 255, cv::THRESH_BINARY_INV);Mat element cv::g…...

Leetcode 144. 二叉树的前序遍历

题目描述 题目链接&#xff1a;https://leetcode.cn/problems/binary-tree-preorder-traversal/description/ 代码实现 class Solution {List<Integer> l new ArrayList<>();public List<Integer> preorderTraversal(TreeNode root) {preoder(root);re…...

医学影像PACS系统源码:多功能服务器和阅片系统

PACS系统是以最新的IT技术为基础&#xff0c;遵循医疗卫生行业IHE/DICOM3.0和HL7标准&#xff0c;开发的多功能服务器和阅片系统。通过简单高性能的阅片功能&#xff0c;支持繁忙时的影像诊断业务&#xff0c;拥有保存影像的院内Web传输及离线影像等功能&#xff0c;同时具有备…...

php 生成连续递增的Excel列索引 可以控制多少列

今天遇到需要生成对应的下拉&#xff0c;下拉的类 需要PHP 输出一个数组 如 A、B、C、D 到Z 列后 Excel 的列就变成 AA 、AB、 AC 依次类推 查询得知 Excel 最大列数 16384 最大行数 1048576 下面演示3000列或行 <?php$idx [idx > 0];for ($i …...

Openstack等私有云

1 OpenStack 计算&#xff1a;部署管理虚拟机存储&#xff1a;块存储 Cinder 和 对象存储 Swift网路&#xff1a;管理网络身份&#xff1a;管理用户和权限镜像&#xff1a;管理镜像用于快速部署新的虚拟机仪表盘&#xff1a;Web界面 2 RAID 如果使用的软件已经在多个硬件设备…...

MySQL 8.0详细安装配置教程

一. 前言 MySQL是目前最为流行的开源数据库产品&#xff0c;是完全网络化跨平台的关系型数据库系统。它起初是由瑞典MySQLAB公司开发&#xff0c;后来被Oracle公司收购&#xff0c;目前属于Oracle公司。因为开源&#xff0c;所以任何人都能从官网免费下载MySQL软件&#xff0c…...

pytest 入门

1,安装pytest 打开终端或命令提示符窗口,在终端中运行以下命令来安装pytest: pip install pytestpip install -i https://pypi.tuna.tsinghua.edu.cn/simple pytest 确保您的系统上已经安装了Python。您可以在终端中运行以下命令来检查Python的安装情况: pytest --version…...

分布式缓存数据一致性-解决方案

如果是用户维度&#xff0c;并发几率小&#xff08;用户修改订单&#xff09;。不需要考虑一致性问题&#xff0c;缓存数据加上过期时间&#xff0c;每隔一段时间出发读数据&#xff0c;主动更新缓存即可。&#xff08;缓存过期删除数据&#xff0c;触发读请求主动更新&#xf…...

Java设计模式-享元模式

享元模式 1.享元模式含义 享元模式&#xff0c;运用共享技术有效地支持大量细粒度的对象。 其实享元模式很好理解&#xff0c;就是共享元数据的意思。比如一个小狗类对象&#xff0c;里面的属性有头&#xff0c;耳朵&#xff0c;眼睛&#xff0c;毛色这几个属性&#xff0c;…...

idea模块的pom.xml被划横线,不识别的解决办法

目录 问题&#xff1a; 解决办法&#xff1a; 1.打开设置 2. 取消勾选 3.点击确认 4.解决 问题提出&#xff1a; 写shi山的过程中&#xff0c;给模块取错名字了&#xff0c;改名的时候不知道点到了什么&#xff0c;一个模块的pom.xml变成灰色了&#xff0…...

聚点智行:WorkBuddy 辅助开发 AI 地图智能应用实战

一、从痛点到创意&#xff1a;一个真实场景的启发 作为一名经常组织朋友聚会的"社交达人"&#xff0c;我遇到了一个看似简单却让人头疼的问题&#xff1a;每次约饭&#xff0c;大家都在问"在哪见&#xff1f;" 张三住在回龙观&#xff0c;李四在东直门&…...

火影AI绘画实战:用忍者绘卷Z-Image Turbo生成鸣人、佐助角色图教程

火影AI绘画实战&#xff1a;用忍者绘卷Z-Image Turbo生成鸣人、佐助角色图教程 1. 教程概述与准备工作 如果你是火影忍者的粉丝&#xff0c;现在可以通过AI技术轻松生成你最喜欢的角色图像。本教程将带你使用"忍者绘卷Z-Image Turbo"这个专门为火影风格优化的AI绘画…...

基于MCGS嵌入版7.7的全自动洗车机组态仿真程序编写与流程图详解

MCGS洗车程序 MCGS嵌入版7.7组态仿真程序 全自动洗车机&#xff0c;脚本程序编写 有完整的流程图"这洗车机PLC程序怎么又卡在喷淋环节了&#xff1f;"凌晨两点的工控车间里&#xff0c;我盯着MCGS嵌入版的仿真界面直挠头。全自动洗车机的脚本调试真是个磨人的小妖精&…...

SSM+Vue大学生兼职网站源码+论文

代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339; 分享万套开题报告任务书答辩PPT模板 作者完整代码目录供你选择&#xff1a; 《SpringBoot网站项目》1800套 《SSM网站项目》1500套 《小程序项目》1600套 《APP项目》1500套 《Python网站项目》…...

暗黑破坏神2存档修改实用教程:从入门到精通的d2s编辑器全攻略

暗黑破坏神2存档修改实用教程&#xff1a;从入门到精通的d2s编辑器全攻略 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor d2s-editor是一款专为《暗黑破坏神2》玩家打造的开源存档编辑工具&#xff0c;支持角色属性调整、物品管…...

GitHub新手避坑指南:从SSH Key到Personal Token,搞定本地项目上传(含大文件失败解决方案)

GitHub新手避坑指南&#xff1a;从SSH Key到Personal Token&#xff0c;搞定本地项目上传&#xff08;含大文件失败解决方案&#xff09; 第一次用GitHub上传项目就像玩扫雷游戏——表面风平浪静&#xff0c;实际暗藏玄机。上周帮实习生小李排查上传失败问题时&#xff0c;发现…...

暗黑破坏神2单机增强神器:PlugY插件全方位使用指南

暗黑破坏神2单机增强神器&#xff1a;PlugY插件全方位使用指南 【免费下载链接】PlugY PlugY, The Survival Kit - Plug-in for Diablo II Lord of Destruction 项目地址: https://gitcode.com/gh_mirrors/pl/PlugY 对于暗黑破坏神2单机玩家而言&#xff0c;有限的储物空…...

Llama-3.2V-11B-cot快速部署:Docker镜像开箱即用,5分钟启动视觉CoT服务

Llama-3.2V-11B-cot快速部署&#xff1a;Docker镜像开箱即用&#xff0c;5分钟启动视觉CoT服务 1. 项目概述 Llama-3.2V-11B-cot是一个支持系统性推理的视觉语言模型&#xff0c;基于LLaVA-CoT论文实现。这个模型能够理解图像内容并进行逐步推理&#xff0c;最终给出合理的结…...

TextInput Effects部署与测试:确保跨平台兼容性的完整流程

TextInput Effects部署与测试&#xff1a;确保跨平台兼容性的完整流程 【免费下载链接】react-native-textinput-effects Text inputs with custom label and icon animations for iOS and android. Built with react native and inspired by Codrops. 项目地址: https://git…...

手把手教你用UML用例图梳理业务流程(附真实项目案例)

实战指南&#xff1a;用UML用例图重构电商订单系统业务流程 1. 为什么用例图是需求分析的基石 在软件开发的混沌初期&#xff0c;当产品经理、开发者和业务方还在用各自的语言描述需求时&#xff0c;UML用例图就像一盏明灯&#xff0c;它能跨越专业术语的鸿沟&#xff0c;用可视…...