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

springboot 虚拟线程demo

jd19支持虚拟线程,虚拟线程是轻量级的线程,它们不与操作系统线程绑定,而是由 JVM 来管理。它们适用于“每个请求一个线程”的编程风格,同时没有操作系统线程的限制。我们能够创建数以百万计的虚拟线程而不会影响吞吐。

做个 springboot demo 尝试一下。

环境

  • jdk19
  • gradle 7.6.1
  • IntelliJ IDEA 2022.2.4

build.gradle

plugins {id 'java'id 'org.springframework.boot' version '3.0.3'id 'io.spring.dependency-management' version '1.1.0'
}group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '19'configurations {compileOnly {extendsFrom annotationProcessor}
}repositories {mavenCentral()
}dependencies {implementation 'org.springframework.boot:spring-boot-starter'compileOnly 'org.projectlombok:lombok'developmentOnly 'org.springframework.boot:spring-boot-devtools'annotationProcessor 'org.projectlombok:lombok'testImplementation 'org.springframework.boot:spring-boot-starter-test'
}tasks.named('test') {useJUnitPlatform()
}tasks.withType(JavaCompile) {options.compilerArgs += "--enable-preview"
}

多线程demo

写一段多线程调用的代码,程序入口

package com.example.myvirtualthreaddemo;import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.core.task.AsyncTaskExecutor;
import org.springframework.core.task.support.TaskExecutorAdapter;
import org.springframework.scheduling.annotation.EnableAsync;import java.util.concurrent.Executors;@EnableAsync
@SpringBootApplication
public class MyVirtualThreadDemoApplication {public static void main(String[] args) {SpringApplication.run(MyVirtualThreadDemoApplication.class, args);}@BeanCommandLineRunner commandLineRunner(AsyncService asyncService){return args -> {for(int i = 0; i < 100; i++){asyncService.fun(i);}};}
}
package com.example.myvirtualthreaddemo;import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;@Service
@Slf4j
public class AsyncService {@Asyncpublic void fun(int i) {log.info("fun:{}", i);}
}

运行结果,使用平台线程(默认8个)

在这里插入图片描述

使用虚拟线程

在MyVirtualThreadDemoApplication添加以下代码块

@Bean(TaskExecutionAutoConfiguration.APPLICATION_TASK_EXECUTOR_BEAN_NAME)public AsyncTaskExecutor asyncTaskExecutor(){return new TaskExecutorAdapter(Executors.newVirtualThreadPerTaskExecutor());}

运行结果,使用虚拟线程
在这里插入图片描述

遇到的一些问题

请使用 --enable-preview 以启用预览 API

解决办法:

  1. build.gradle里添加以下配置:
tasks.withType(JavaCompile) {options.compilerArgs += "--enable-preview"
}
  1. 设置vm选项如图
    在这里插入图片描述

相关文章:

springboot 虚拟线程demo

jd19支持虚拟线程&#xff0c;虚拟线程是轻量级的线程&#xff0c;它们不与操作系统线程绑定&#xff0c;而是由 JVM 来管理。它们适用于“每个请求一个线程”的编程风格&#xff0c;同时没有操作系统线程的限制。我们能够创建数以百万计的虚拟线程而不会影响吞吐。 做个 spri…...

CTFer成长之路之逻辑漏洞

逻辑漏洞CTF 访问url: http://1b43ac78-61f7-4b3c-9ab7-d7e131e7da80.node3.buuoj.cn/ 登录页面用随意用户名密码登录 访问url&#xff1a; http://1b43ac78-61f7-4b3c-9ab7-d7e131e7da80.node3.buuoj.cn/user.php 登陆后有商品列表&#xff0c;共三个商品,点击购买flag 钱…...

入门力扣自学笔记238 C++ (题目编号:1144)

1144. 递减元素使数组呈锯齿状 题目&#xff1a; 给你一个整数数组 nums&#xff0c;每次 操作 会从中选择一个元素并 将该元素的值减少 1。 如果符合下列情况之一&#xff0c;则数组 A 就是 锯齿数组&#xff1a; 每个偶数索引对应的元素都大于相邻的元素&#xff0c;即 A…...

蓝桥杯-寒假作业

没有白走的路&#xff0c;每一步都算数&#x1f388;&#x1f388;&#x1f388; 题目描述&#xff1a; 有四个等式&#xff0c;每个等式的运算规则已经定好了&#xff0c;也就是我们常见的小学的四则运算&#xff0c;但是能够用来四则运算的数字非常有限&#xff0c;包括1~13…...

测试用例篇

1.测试用例的意义 测试用例&#xff08;Test Case&#xff09;是为了实施测试而向被测试的系统提供的一组集合&#xff0c;这组集合包含&#xff1a;测试环境、操作步骤、测试数据、预期结果等要素。 测试用例的意义是为了帮助测试人员了解测什么&#xff0c;怎么测 eg&#x…...

自动驾驶自主避障概况

文章目录前言1. 自主避障在自动驾驶系统架构中的位置2. 自主避障算法分类2.1 人工势场法&#xff08;APF&#xff09;2.1.1引力势场的构建2.1.2斥力势场的构建2.1.3人工势场法的改进2.2 TEB&#xff08;Timed-Eastic-Band, 定时弹性带&#xff09;2.3 栅格法2.4 向量场直方图(V…...

Python实用的库排名…

Python 是一个功能强大的编程语言&#xff0c;有着丰富的第三方库和模块&#xff0c;可以帮助你解决各种各样的问题。以下是一些比较厉害的 Python 库&#xff1a; NumPy&#xff1a;一个强大的数值计算库&#xff0c;提供了高效的数组和矩阵操作功能。 Pandas&#xff1a;提供…...

【YOLO系列】YOLOv4论文超详细解读1(翻译 +学习笔记)

前言 经过上一期的开篇介绍&#xff0c;我们知道YOLO之父Redmon在twitter正式宣布退出cv界&#xff0c;大家都以为YOLO系列就此终结的时候&#xff0c;天空一声巨响&#xff0c;YOLOv4闪亮登场&#xff01;v4作者是AlexeyAB大神&#xff0c;虽然换人了&#xff0c;但论文中给出…...

【神经网络】Transformer基础问答

1.Transforme与LSTM的区别 transformer和LSTM最大的区别就是LSTM的训练是迭代的&#xff0c;无法并行训练&#xff0c;LSTM单元计算完T时刻信息后&#xff0c;才会处理T1时刻的信息&#xff0c;T 1时刻的计算依赖 T-时刻的隐层计算结果。而transformer的训练是并行了&#xff0…...

制定防火墙策略的步骤和建议

制定防火墙策略是保护企业网络环境安全的关键一步。下面是一些制定防火墙策略的步骤和建议&#xff0c;供参考&#xff1a; 识别网络资产&#xff1a;确定企业网络环境中所有的网络资产&#xff0c;包括服务器、应用程序、数据库、移动设备和终端用户设备等&#xff0c;并进行…...

新必应(New Bing)国内申请与使用教程

微软的新必应&#xff08;New Bing&#xff09;基于GPT4模型&#xff0c;比ChatGPT的GPT3.5模型领先半个世代。并且集成了Edge浏览器的数据资源&#xff0c;功能更加强大。经过不断的踩坑&#xff0c;终于申请到了New Bing的使用权限&#xff0c;且国内网络也能够正常使用&…...

博客系统——项目测试报告

目录 前言 博客系统——项目介绍 1、测试计划 1.1、功能测试 1.1.1、编写测试用例 1.1.2、实际执行步骤 1.2、使用Selenium进行Web自动化测试 1.2.1、引入依赖 1.2.2、提取共性&#xff0c;实现代码复用 1.2.3、创建测试套件类 1.2.4、博客登录页自动化测试 1.2.5、…...

Macbook M1 安装PDI(Kettle) 9.3

Macbook M1 安装PDI(Kettle) 9.3 当前 PDI&#xff08;Kettle&#xff09;最新版为9.3&#xff0c;依赖Java JDK 11。因为没有专门用于 M1的程序&#xff0c;需要下载并安装x86_64架构的JDK及依赖软件&#xff0c;并 “强制在Intel模式下运行shell” 的方式来实现 Kettle 的正…...

机器学习——模型评估

在学习得到的模型投放使用之前&#xff0c;通常需要对其进行性能评估。为此&#xff0c;需使用一个“测试集”(testing set&#xff09;来测试模型对新样本的泛化能力&#xff0c;然后以测试集上的“测试误差( tootino error)作为泛化误差的近似。我们假设测试集是从样本真实分…...

react react-redux学习记录

react react-redux学习记录1.原理2.怎么用呢2.1 容器组件2.2UI组件2.3 App.jsx3.简化3.1简写mapDispatch3.2 Provider组件的使用3.3整合UI组件和容器组件1.原理 UI组件:不能使用任何redux的api&#xff0c;只负责页面的呈现、交互等。 容器组件&#xff1a;负责和redux通信&…...

nodejs环境配置

啥是node.js 简单理解就是js运行环境 啥是npm 简单理解就是nodejs包管理工具&#xff0c;全称Node Package Manager 啥是cnpm npm的开源镜像&#xff0c;在国内使用cnpm替代npm可以起到加速的效果 https://npmmirror.com/ ①安装node.js https://nodejs.org/en/download/ 下载…...

数据治理之元数据管理Atlas

数据治理之元数据管理的利器——Atlas 一、数据治理与元数据管理 1.1 背景 为什么要做数据治理&#xff1f; 业务繁多&#xff0c;数据繁多&#xff0c;业务数据不断迭代。人员流动&#xff0c;文档不全&#xff0c;逻辑不清楚&#xff0c;对于数据很难直观理解&#xff0c;…...

15 Nacos客户端实例注册源码分析

Nacos客户端实例注册源码分析 实例客户端注册入口 流程图&#xff1a; 实际上我们在真实的生产环境中&#xff0c;我们要让某一个服务注册到Nacos中&#xff0c;我们首先要引入一个依赖&#xff1a; <dependency><groupId>com.alibaba.cloud</groupId>&l…...

C++将派生类赋值给基类(向上转型)

1.将派生类对象赋值给基类对象 #include <iostream> using namespace std;//基类 class A{ public:A(int a); public:void display(); public:int m_a; }; A::A(int a): m_a(a){ } void A::display(){cout<<"Class A: m_a"<<m_a<<endl; }//…...

使用Platform Designer创建Nios II 最小系统

Nios II简介 ​ Nios II 软核处理器十多年前就有了&#xff0c;它和xilinx的MicroBlaze类似&#xff0c;性能相比硬核处理器要差得多&#xff0c;工程应用也不是很多&#xff0c;那还有必须学习一下吗&#xff1f;我个人认为了解一下Nios II开发流程&#xff0c;对intel FPGA开…...

百度网盘Mac版下载加速引擎:突破限速的完整优化指南

百度网盘Mac版下载加速引擎&#xff1a;突破限速的完整优化指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 当你面对100KB/s的下载速度&#xff0c…...

遥感小白别慌!ENVI 5.6 基础操作保姆级教程:从打开文件到剖面图显示,一篇搞定

遥感新手实战指南&#xff1a;ENVI 5.6 从零到剖面分析的完整工作流 第一次打开ENVI时&#xff0c;那个布满英文按钮的界面和密密麻麻的菜单栏&#xff0c;是不是让你瞬间想起了大学时被专业课支配的恐惧&#xff1f;别担心&#xff0c;三年前的我也是这样——面对一幅Landsat…...

技术无罪,人心可畏 —— 写在 315 “GEO 投毒” 话题之后

2026 年央视 315 晚会&#xff0c;将镜头对准了人工智能领域的灰色地带 ——“AI 投毒” 与 “GEO” 一夜之间成为公众热议的话题。记者虚构了一款名为 “Apollo-9” 的智能手环&#xff0c;借助 “GEO 优化系统” 批量生成虚假内容&#xff0c;短短数小时就让多个主流 AI 大模…...

HoRain云--Vue3组件开发:从入门到精通的终极指南

&#x1f3ac; HoRain 云小助手&#xff1a;个人主页 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站&#xff0c;性价比超高&#xff0c;大内存超划算&#xff01;忍不住分享一下给大家。点击跳转到网站。 目录 ⛳️ 推荐 …...

当 Go 还在追求极简时,C++ 26 却又加了四大“史诗级”新特性

大家好&#xff0c;我是Tony Bai。在这个 Go、Zig 等“小而美”新语言颇受青睐的时代&#xff0c;如果你去技术社区里问一句&#xff1a;“C 这门语言怎么样&#xff1f;”你大概率会得到一堆充满戏谑的回答&#xff1a;“太复杂了&#xff0c;别学”、“从入门到放弃”、“面试…...

16-bit像素UI有多酷?Pixel Epic智识终端交互设计与视觉效果展示

16-bit像素UI有多酷&#xff1f;Pixel Epic智识终端交互设计与视觉效果展示 1. 像素史诗&#xff1a;当科研遇上复古游戏 在数字世界的某个角落&#xff0c;一款名为Pixel Epic的智识终端正在重新定义AI工具的交互体验。这不是普通的报告生成器&#xff0c;而是一场将严肃科研…...

XHS-Downloader:解决小红书内容高效采集难题的开源解决方案

XHS-Downloader&#xff1a;解决小红书内容高效采集难题的开源解决方案 【免费下载链接】XHS-Downloader 小红书&#xff08;XiaoHongShu、RedNote&#xff09;链接提取/作品采集工具&#xff1a;提取账号发布、收藏、点赞、专辑作品链接&#xff1b;提取搜索结果作品、用户链接…...

万物识别镜像高级功能探索:除了基础识别,还能做什么?

万物识别镜像高级功能探索&#xff1a;除了基础识别&#xff0c;还能做什么&#xff1f; 1. 万物识别镜像的隐藏潜力 大多数人使用万物识别镜像时&#xff0c;只停留在基础识别功能上——上传图片&#xff0c;获取识别结果。但这款基于cv_resnest101_general_recognition算法…...

8种Prompt优化技巧:解决大模型输出不稳定痛点

8种Prompt优化技巧&#xff1a;解决大模型输出不稳定痛点 在大模型应用落地过程中&#xff0c;开发者常遇到输出结果不可控的问题&#xff1a;同样的需求多次调用返回内容差异巨大、回答偏离核心要求、格式混乱无法直接解析&#xff0c;这些问题严重影响业务流程的稳定性和用户…...

8-Bit美学不妥协性能|像素剧本圣殿UI渲染与LLM推理资源隔离方案

8-Bit美学不妥协性能&#xff5c;像素剧本圣殿UI渲染与LLM推理资源隔离方案 1. 项目概述 像素剧本圣殿&#xff08;Pixel Script Temple&#xff09;是一款专为剧本创作者设计的AI辅助工具&#xff0c;基于Qwen2.5-14B-Instruct大模型深度微调开发。它将高性能AI推理能力与独…...