⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

Java 虚拟线程:轻量级并发革命

探索 JDK 21 虚拟线程,编写高并发应用而无需担心线程开销。 · 难度:入门 · +15XP

虚拟线程概述

虚拟线程(Virtual Thread)是 JDK 19 预览、JDK 21 正式发布的轻量级线程,由 JVM 管理而非操作系统。它们可以轻松创建数百万个,适合 I/O 密集型任务。

创建虚拟线程

// 使用 Thread.Builder
Thread vThread = Thread.ofVirtual().name("vt1").start(() -> {
    System.out.println("Running in virtual thread");
});

// 使用 Executors.newVirtualThreadPerTaskExecutor() try (var executor = Executors.newVirtualThreadPerTaskExecutor()) { executor.submit(() -> System.out.println("Task")); }

与传统平台线程对比

特性平台线程虚拟线程
创建成本高(系统调用)极低
最大数量有限(通常几千)数百万
调度OS 内核JVM 用户态
适用场景CPU 密集I/O 密集

注意事项

示例:批量处理请求

List<Callable<String>> tasks = IntStream.range(0, 1000)
    .mapToObj(i -> (Callable<String>) () -> "Task " + i + " done")
    .toList();

try (var executor = Executors.newVirtualThreadPerTaskExecutor()) { List<Future<String>> futures = executor.invokeAll(tasks); futures.forEach(f -> System.out.println(f.get())); }

练习提示

在 starter code 中,创建 10 个虚拟线程,每个线程打印自己的名称和当前时间。

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 133 篇
0 完成
🔥 0