Java 21 引入了两个重要的新特性:虚拟线程 (Virtual Threads) 和 记录类 (Record Patterns)。以下是它们的主要特点:
虚拟线程 Virtual Threads
- 轻量级线程:虚拟线程是JVM实现的轻量级线程,相比传统平台线程占用更少的资源
- 提高并发性能:能够支持数百万个虚拟线程同时运行,显著提升高并发应用的吞吐量
- 简化编程模型:开发者可以为每个请求创建一个独立的虚拟线程,无需复杂的线程池管理
- 无缝集成:与现有的
java.util.concurrentAPI兼容,迁移成本低 - 启用方式:通过JVM参数
-Djdk.virtualThreadScheduler=true启用
// 创建虚拟线程示例
try (var executor = Executors.newVirtualThreadPerTaskExecutor()) {
Future<String> future = executor.submit(() -> {
// 任务逻辑
return "result";
});
}
记录类 Record Patterns
- 增强模式匹配:扩展了Java 14引入的record类型,支持在switch表达式和instanceof检查中使用
- 简化数据访问:可以直接从record对象中解构出组件值,无需显式调用getter方法
- 提升代码可读性:减少样板代码,使数据处理更加直观
// Record定义
record Point(int x, int y) {}
// Record patterns使用示例
static String formatPoint(Object obj) {
return switch (obj) {
case Point(int x, int y) -> "Point(%d, %d)".formatted(x, y);
default -> "Not a point";
};
}
// instanceof中的使用
if (obj instanceof Point(int x, int y)) {
System.out.println("x: " + x + ", y: " + y);
}