当前位置: 首页 > 中国星空网 > 电影 > 内容页

性能提升 200% !SpringBoot 虚拟线程来了 全球球精选

2023-06-24 14:47:09 来源:程序员客栈

在以往的项目中,我们面临了这样一种情况:我们收到了数千个认证请求。为了确保安全性,我们依靠第三方系统发送短信 OTP 进行验证。然而,有时候第三方系统花费的时间比预期的要长,导致延迟。我们采用了每个请求一个线程的模型,这意味着许多线程处于等待状态,并且新请求都在队列中。我们试图通过微调线程数量来优化性能,但当时我们希望有虚拟线程功能。当时 Java 中没有虚拟线程的概念,这就是 Project Loom 的作用。


(资料图)

虚拟线程
什么是 Project Loom?

什么是 Project Loom?这是 Oracle 的一个新项目,主要目标是显著减少编写、维护和观察高吞吐量并发应用程序的工作量。换句话说,Project Loom 旨在支持和推进一个高吞吐量、轻量级的 Java 并发模型,因为传统的操作系统线程(Java 并发模型的核心)有一些缺点,并且在计算上相当昂贵。反之,虚拟线程是更轻量级的线程,不与操作系统线程连接(由 JVM 管理)。这意味着虚拟线程是“每请求对应一个线程”编程的理想选择,可以创建大量的虚拟线程,而不会降低吞吐量。开发人员可以使用现有的 JDK 工具和技术快速排除故障、调试和分析并发应用程序,在发布的 Spring Boot 3.1 中可用。作为 Spring 开发者,了解虚拟线程的概念并理解它们在开发过程中的重要性非常关键。

如何使用虚拟线程Java 版本选择

Java 19 中引入的虚拟线程非常易于使用,笔者使用的 Mac M1 系列,这里选择 Azul Zulu 发行版 20.30.11 版本[1]

azul 20
创建测试项目

使用 Spring Initializer 或 IDE 创建项目。添加 spring-web 依赖项并添加元数据。(注意版本选择 SpringBoot 3.1 ,Java 20)

开启虚拟线程功能
默认报错

默认情况下, Java19 的虚拟线程功能是禁用状态的,需要通过相关 maven 编译配置开启。

org.springframework.bootspring-boot-maven-pluginorg.apache.maven.pluginsmaven-compiler-plugin--enable-preview

通过配置 bean 启用虚拟线程

@Bean TomcatProtocolHandlerCustomizerthreadExecutorCustomizer() {  return protocolHandler ->protocolHandler.setExecutor(Executors.newVirtualThreadPerTaskExecutor()); }

这个 Bean 是一个自定义的 Tomcat 协议处理器,负责处理 Spring Boot 应用程序中传入的请求。这个自定义程序的目的是配置协议处理器使用的执行器。

在 threadExecutorCustomizer 方法内部,使用 Lambda 表达式来自定义协议处理器。protocolHandler 参数代表正在自定义的 Tomcat 协议处理器的实例。

在 Lambda 表达式中,调用 protocolHandler 对象的 setExecutor() 方法,用于为协议处理器设置执行器。执行器负责执行任务,例如处理传入的请求。

在这种情况下,使用 Executors.newVirtualThreadPerTaskExecutor() 方法创建一个新的使用虚拟线程的执行器。虚拟线程是轻量级线程,可以在单个操作系统线程中并发执行任务。这意味着可以同时执行多个任务,提高性能和资源利用率。

增加测试端点

@Slf4j@RequestMapping@RestControllerpublic class DemoController {    @GetMapping("/")    public String demo() {        try {            TimeUnit.MILLISECONDS.sleep(300);        } catch (InterruptedException e) {            log.error(e.getMessage());        }        return "Current Thread Name: " + Thread.currentThread();    }}

上手使用

我们可以通过 Thread.currentThread() API 获取当前请求线程的元信息,以判断虚拟线程是否已经正确开启。

性能测试对比100 线程测试不开启虚拟线程
吞吐量 300/s
开启虚拟线程
吞吐量 300/s
300 线程测试不开启虚拟线程
吞吐量 650/s
开启虚拟线程
吞吐量 950/s
500 线程测试不开启虚拟线程
吞吐量 650/s
开启虚拟线程
吞吐量 1500/s
图表输出总结

通过以上我们发现,在处理阻塞操作时,虚拟线程特别有益。随着并发请求数量的增加,虚拟线程的性能提升越来越明显。上述测试都是在未对 Spring Boot 项目进行调优和优化的情况下进行的。

参考资料[1]

Azul Zulu 发行版 20.30.11 版本: https://www.azul.com/downloads/?version=java-20-sts&os=macos&architecture=arm-64-bit&package=jdk#zulu

标签:

网红

更多

猜你喜欢

更多
性能提升 200% !SpringBoot 虚拟线程来了 全球球精选 环球速看:让人才找到小县城就业的“烟火气” 俄媒:佩斯科夫称普京了解“瓦格纳”集团创始人情况,会采取必要措施|世界快讯 我的世界蝾螈怎么带走 我的世界蝾螈怎么找到 语法结构(精选5篇) 天天快播报 观天下!上市进程发生变化,完达山乳业上市辅导终止 世界即时看!「新思想引领新征程」藏粮于地藏粮于技 夯实粮食安全根基 今日热搜:“双黄”预警高挂!全市防汛防台三级响应启动 天天观察:突发!“普里戈任号召叛乱”,莫斯科已加强安全措施 环球通讯!民宿管家、外卖运营师……这些新职业扩宽就业空间 世界观热点:win7电脑小喇叭不见了怎么办_win7小喇叭不见了怎么办 【播资讯】夏季儿童易腹泻,怎么防怎么治一篇说清楚→ 勇士普尔分手错在哪方?冠军文化也有AB两面 环球播资讯 焦点快播:蔚来手机配备的 UWB 技术,苹果、小米几年前就应用了 贵州有没有人养殖竹鼠(遵义竹鼠养殖基地) 房贷降息:算算你能省多少钱?2023年还会再降吗? 《豹头王传说》1卷3话4节|环球快播 一众新秀采访:最想对位的球员五花八门 但都最想隔扣詹姆斯 “瓦格纳”部队已进入俄境内? 普京已知悉消息_当前通讯 博乐市青达拉街道:“送关怀、送健康、送安全” 赛力斯新能源车加速出海 SERES 5开启欧洲首批交付 江门“00后”小伙冯伟浚扒龙舟气势勇猛“火出圈”传承龙舟精神 激发拼搏热情 三星电脑开不了机怎么办(三星电脑) 世界微头条 epic错误回复请刷新界面怎么办epic错误回复请刷新界面解决办法_当前观点 风吹十里荷花香 “莲”通乡村“致富路”|世界今热点 全球即时看!广发货币基金A是保本吗 谢枋得传_谢枋得 世界热点!爱国节!品味粽香端午 传承家国情怀 新华全媒+|沉浸式体验!沪苏轨交11号线“牵手”亮点满满|世界动态 无限小说下载网站|快消息 恒力石化分拆借壳计划“复活” vivo X80 Pro连接airpods教程 新疆博湖县第十六届博斯腾湖开湖季活动开幕 装机系统推荐哪个软件好用 最新资讯:2023年8月,腰缠万贯,收入创新高的3大生肖 恐怖如斯!零封TES后JDG稳坐榜首,夏季赛目前仅输给WBG 简讯 茶陵举办中小学师生艺术节 计算机的硬件和软件有哪些(计算机的硬件和软件)|当前热议 河北为啥这么热?快来听听气象专家怎么说 压缩空气储能技术装备研究院在西安成立 开喉剑喷雾剂儿童型说明书20ml_开喉剑喷雾剂儿童型说明书 惠州巽寮湾酒店官网_惠州巽寮湾酒店 关于拆迁补偿协议无效的几种情况|当前讯息 成都GDP赶超苏州,未来还有哪些机会? 8名青岛籍球员首发,郑龙刘震理建功,海牛晋级中国足协杯16强 前沿资讯 天天简讯:深圳二手房暴跌,炒房客哭了…… 深圳湾海关查获檀香紫檀原木191千克-今日快看 “热死了”真不是玩笑,这4个中暑急救方法,关键时刻能救命! 日本滞留中国人-世界热闻 世界热门:中国天眼发现轨道周期最短脉冲星双星系统 重点聚焦!夏普复印机论坛_夏普中文论坛 湖南常德:完善民生保障 构建社会养老服务体系 热文 射击网游《不羁联盟》开启免费公测,但土豆服务器依旧是问题 psb是什么格式文件 psb是什么格式_看热讯 用友财务软件_关于用友财务软件介绍 世界最新:福州旗山湖公园惊现大量千足虫,专家:无毒 猫癣在人身上得了怎么办能根除吗_猫癣长在人身上怎么治 vivo投屏到电脑上_vivo投屏到电脑 当前关注 世界今日讯!说文解字梦的解释_梦的解释 牛年对联经典_2021经典牛年适用对联 焦点讯息 世界即时看!oppo广告音乐photography_oppo广告音乐 Vlog丨藏博会:把科技创新深植于雪域高原 全球速看料 【世界时快讯】马肉怎么吃(卤马肉好吃) 天天新动态:吉他版那些你很冒险的梦_那些你很冒险的梦吉他谱c调 建筑设备工程计价 资讯:单行路标志和直行车道标志的区别 交通标志里直行和单行标志有什么区别 天天视点!马赛官方:任命马塞利诺为球队新帅 环球快播:柯林斯字典_关于柯林斯字典概略 柯映林_关于柯映林概略_世界新资讯 【世界独家】河北围场:木兰围场国有林场开展森林火灾应急处置大练兵 绝色皇妃成长记_绝色之三岁小皇妃 世界观热点:军训汇演展风采 飒爽英姿致青春 天天看热讯:尼古拉•阿布拉莫维奇•苏沃诺夫的个人历史 金溪县发布雷电黄色预警 快看点 橡皮筋魔术揭秘图解_橡皮筋魔术揭秘 全球快讯:运能强 跑得顺 停得稳 青藏铁路将迈入动车时代 全球热点!分析人士:军工复合体持续运转 美国进一步拱火俄乌冲突 热血传奇命运之刃任务怎么做(热血传奇命运之刃任务流程)-环球精选 直流电源校准(电源校准错误) 分付微信怎么开通不了呢(分付微信怎么开通) 每日短讯:中国广核集团发布关于他人涉嫌假冒我集团名义行骗的严正声明 痛失夺冠功臣!雄鹿悍将拒绝续约留队,顶薪携手哈登加盟火箭 当前速递!射阳县举行道路运输危化品应急救援预案演练 债权人撤销债务纠纷律师费用是多少-环球简讯 最新:厨房灶台价格是多少钱一米(厨房灶台价格) 家族式企业需要警惕的六大弊端-今日观点 张雨绮的奇葩礼物,张雨绮是哪年出生的?-世界快看点 2023厦门公积金提取条件是什么?提取条件和提取流程一览_每日热议 意味深长!国少队比赛沈祥福带麦在包厢看球,球迷:谁才是主教练 世界今热点 IMF:2030气候目标已无法实现,创建“韧性和可持续性基金” 每日消息!毛阿敏久违露面竟然风格大变,穿衬衫+五分裤扮嫩,可惜有点浮肿 “轨道上的京津冀”持续加速 为京津冀协同发展提供新动能 ——京广高铁京武段常态化按时速350公里高标运营一周年 “中国天眼”,有重要新发现! 时隔306天,LSB.Teddy再次在LCK联赛选出下路卡莉斯塔_天天快资讯 简讯:小米售后电话人工服务(小米售后电话) 注意!浙江江西局地发生地质灾害的气象风险高 【报资讯】肉牛养殖多久可以出栏? 小米65w充电器支持pd协议吗 完美世界:石昊寻找大魔神,前往恶魔岛黑牢,上古真神出世了 世界热头条丨《第七史诗》注意事项 前期都要注意什么

直播

  1. 今头条!腾讯手游助手电脑版下载安装(腾讯手游助手电脑版)

    今头条!腾讯手游助手电脑版下载安装(腾讯手游助手电脑版)

  2. 【时快讯】深圳市顺丰快递电话号码(深圳顺丰快递的电话号码)

    【时快讯】深圳市顺丰快递电话号码(深圳顺丰快递的电话号码)

  3. 天天视讯!木耳熬汤(meat)

    天天视讯!木耳熬汤(meat)

  4. 看热讯:南烟斋笔录小说txt资源(南烟斋笔录小说txt)

    看热讯:南烟斋笔录小说txt资源(南烟斋笔录小说txt)

  5. 焦点速读:日文是什么意思中文(日文是什么字上下)

    焦点速读:日文是什么意思中文(日文是什么字上下)

  6. 动态焦点:锦城丝管日纷纷半入江风半入云此曲只应天上有人间能得几回闻(锦城丝管日纷纷半入江风半入云)

    动态焦点:锦城丝管日纷纷半入江风半入云此曲只应天上有人间能得几回闻(锦城丝管日纷纷半入江风半入云)

  7. 环球报道:五分裤男(五分裤)

    环球报道:五分裤男(五分裤)

  8. 前沿热点:驱赶喜鹊妙招(驱赶)

    前沿热点:驱赶喜鹊妙招(驱赶)

  9. 每日消息!求一些工藤新一最帅的照片和他的简介。

    每日消息!求一些工藤新一最帅的照片和他的简介。

  10. 焦点关注:发达国家在经济发展过程中最大的问题是什么(发达国家在经济发展过程中最大的问题是)

    焦点关注:发达国家在经济发展过程中最大的问题是什么(发达国家在经济发展过程中最大的问题是)