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

Spring boot 使用虚拟线程示例

项目使用版本

  • Spring Boot v3.5.6
  • jdk 25

配置

创建 VirtualThreadConfig 配置类

@Configuration
@EnableAsync
public class VirtualThreadConfig {@Bean(name = "virtualThreadExecutor")public TaskExecutor virtualThreadExecutor() {return new TaskExecutorAdapter(Executors.newVirtualThreadPerTaskExecutor());}@Bean(name = "threadPoolTaskExecutor")public TaskExecutor threadPoolTaskExecutor() {ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();executor.setThreadNamePrefix("my-pool-");executor.initialize();return executor;}
}

创建演示服务接口

@Service
public class DemoThreadService {// 使用虚拟线程@Async("virtualThreadExecutor")public CompletableFuture<String> demoVirtualThreadExecutor() {System.out.println("是否为虚拟线程:" + Thread.currentThread().isVirtual() + " 线程名称:" + Thread.currentThread().getName());return CompletableFuture.completedFuture("虚拟线程 " + new Random().nextInt(1000));}@Async("threadPoolTaskExecutor")public CompletableFuture<Integer> demoThreadPoolTaskExecutor() {System.out.println("是否为虚拟线程:" + Thread.currentThread().isVirtual() + " 线程名称:" + Thread.currentThread().getName());return CompletableFuture.completedFuture(new Random().nextInt(1000));}
}

创建controller

@RestController
public class DemoController {@Resourceprivate DemoThreadService demoThreadService;@GetMapping("/demo")public String hello() throws InterruptedException, ExecutionException {CompletableFuture<String> fetchExternalData = demoThreadService.demoVirtualThreadExecutor();demoThreadService.demoThreadPoolTaskExecutor();return "Hello, World! ===> " + fetchExternalData.get();}}

演示结果

  • 控制台打印信息

image

  • 请求响应信息

image

http://www.jsqmd.com/news/31277/

相关文章:

  • 微算法科技(NASDAQ MLGO):以隐私计算区块链筑牢多方安全计算(MPC)安全防线
  • 怎么把idea的目录结构,以文本形式输出?——idea使用tree
  • 2025年11月沼气直燃厂家综合评测:徐州海德测控技术有限公司领跑
  • 微信小程序初始配置
  • python爬虫scrapy框架使用 - 教程
  • 2025年塑烧板除尘器源头厂家权威推荐榜单:耐高温除尘器/防爆除尘器/不锈钢除尘器源头厂家精选
  • 2025年剪叉升降平台供应商权威推荐榜单:车载剪叉式升降平台/移动剪叉式升降平台车/轨道升降平台源头厂家精选
  • 第180天:横向移动篇入口切换SMB共享WMI管道DCOM组件Impacket套件CS插件
  • 2025年11月沼气直燃品牌/品牌排名前十:技术实力对比与总结
  • 高效学习方式——知识关联性
  • 基于时间的ACL - 教程
  • 2025年云南做楼体灯光亮化服务商权威推荐榜单:云南做酒店灯光亮化/云南做居民楼灯光亮化/云南做写字楼灯光亮化服务商精选
  • 信息系统方案的范围管理(12345智慧政务)
  • [Python刷题记录]-三数之和-双指针-中等
  • Serilog日志库简单实践(一):控制台与调试Sinks(.NET 8)汇报总结
  • WPF实现组件拖动(Canvas)
  • 2025 年最新测控终端厂家推荐:符合国标 + 数据透传技术,靠谱企业深度测评报告4G 测控终端/远程测控终端/物联网测控终端/测控终端 RTU 公司推荐
  • 使用Node.js开发MCP服务器入门总结
  • 2025年菊花种苗生产厂家权威推荐榜单:菊花造型/菊花花坛/菊花种苗基地源头厂家精选
  • 2025年低噪音冷却塔实力厂家权威推荐榜单:工业冷却塔/防腐蚀冷却塔/冷却塔填料源头厂家精选
  • React系列教程:2. 定义一个组件
  • go语言获取腾讯股票示例
  • 质数筛
  • 2025年11月低氮燃烧器品牌前十排名:权威评测与行业洞察
  • React系列教程:3. 管理状态
  • 2025年外墙保温装饰一体板厂家推荐:浙江欣阳嘉茂控股集团,保温装饰一体板/保温装饰板/金属保温装饰一体板/薄陶瓷保温装饰一体板/多品类适配建筑需求
  • 如何申请和设置400电话系统?
  • 传图取字小程序:高效 OCR 文字识别工具,轻松实现图片转文字
  • 2025年11月火焰检测供应商Top10权威推荐榜:海德测控居首
  • 如何优化智能客服平台的服务流程?技巧分享!