type
Post
status
Published
date
Jan 27, 2026
slug
coroutines-vt
summary
让 Kotlin 协程底层运行在 JDK 21 的轻量级虚拟线程之上,从而实现更高效的并发调度。
tags
Kotlin
协程
category
开发日志
icon
fas fa-code
password
Kotlin 的协程默认基于平台线程实现,本质上是一套线程调度框架。而从 JDK 21 开始,JDK 原生支持了真正的轻量级并发模型——虚拟线程(Virtual Threads)。因此,在新项目中采用虚拟线程作为并发模型是更优的选择。
要让 Kotlin 协程基于 JDK 虚拟线程运行,只需将协程作用域配置为使用虚拟线程池即可。

引入依赖

首先在项目中添加 Kotlin 协程依赖:

配置 Bean

在 Spring Boot 环境中添加以下配置:

核心原理

关键在于 vtDispatcher 这个 Bean:
它的作用是在接下来替代默认的 IO 或者 CPU 调度器。
asCoroutineDispatcher() 方法是连接 Java 线程池与 Kotlin 协程的桥梁,它将 Java 的 Executor 转换为 Kotlin 的 CoroutineDispatcher
需要注意的是,SimpleAsyncTaskExecutor 这个 Bean 只有在配置文件中开启了虚拟线程支持后才会被创建:

使用方式

配置完成后,在代码中使用刚才注册的 vtScope 即可:
这样协程的上下文切换就基于虚拟线程而非平台线程了,充分发挥虚拟线程的优势。