第70章测试

Java 21新特性 - 虚拟线程、模式匹配增强、字符串模板

📋 测试说明

本测试包含10道选择题,涵盖Java 21的主要新特性。请仔细阅读每道题目,选择最佳答案。完成后可查看详细解析。

10
题目总数
15
预计用时(分钟)
70
及格分数
1
虚拟线程的特点

关于Java 21中的虚拟线程,以下哪个说法是错误的?

💡 解析

答案:C

虚拟线程主要适合I/O密集型任务,而不是CPU密集型任务。对于CPU密集型任务,传统的平台线程通常更合适。虚拟线程的优势在于可以在I/O阻塞时释放载体线程,从而提高并发性能。

2
创建虚拟线程

以下哪种方式可以正确创建虚拟线程?

// 选项A Thread thread = new Thread(() -> { /* 任务代码 */ }); thread.setVirtual(true); // 选项B Thread thread = Thread.ofVirtual().start(() -> { /* 任务代码 */ }); // 选项C Thread thread = Thread.createVirtual(() -> { /* 任务代码 */ }); // 选项D Thread thread = VirtualThread.create(() -> { /* 任务代码 */ });

💡 解析

答案:B

正确的创建虚拟线程的方式是使用 Thread.ofVirtual().start() 方法。这是Java 21提供的标准API。选项A中不存在setVirtual方法,选项C和D的API都不存在。

3
模式匹配增强

以下代码中,哪个switch表达式使用了正确的模式匹配语法?

💡 解析

答案:B

Java 21中的守卫条件使用 when 关键字,而不是 if&&where。正确的语法是 case Type variable when condition

4
字符串模板

关于Java 21的字符串模板特性,以下哪个说法是正确的?

💡 解析

答案:B

字符串模板在Java 21中是预览特性,需要使用 --enable-preview 标志来启用。它支持表达式插值和多行字符串,功能非常强大。

5
序列化集合

以下哪个方法是序列化集合(SequencedCollection)新增的API?

💡 解析

答案:A

序列化集合接口新增了 addFirst()addLast() 方法,以及对应的 getFirst()getLast()removeFirst()removeLast() 等方法,还有 reversed() 方法返回反向视图。

6
虚拟线程执行器

创建虚拟线程执行器的正确方法是?

💡 解析

答案:B

正确的方法是 Executors.newVirtualThreadPerTaskExecutor(),这个执行器为每个任务创建一个新的虚拟线程。

7
Java版本类型

Java 21属于什么类型的版本?

💡 解析

答案:B

Java 21是长期支持版本(LTS),继Java 8、11、17之后的第四个LTS版本,将获得长期的支持和维护。

8
模式匹配记录类

以下代码中,哪个是正确的记录类模式匹配语法?

record Point(int x, int y) {} record Circle(Point center, int radius) {}

💡 解析

答案:A

记录类的模式匹配使用构造函数语法,可以嵌套解构。正确的语法是 Circle(Point(var x, var y), var r),这样可以直接提取嵌套记录的字段。

9
虚拟线程注意事项

在使用虚拟线程时,以下哪个做法是不推荐的?

💡 解析

答案:C

不应该池化虚拟线程,因为它们的创建成本很低。虚拟线程设计为一次性使用,为每个任务创建新的虚拟线程是推荐的做法。

10
字符串模板语法

以下哪个是正确的字符串模板语法?

💡 解析

答案:B

Java字符串模板使用 \{} 语法进行变量插值,而不是 ${}#{}{}。正确的语法是 STR."Hello \{name}!"

返回章节
0%

你答对了 0 道题,共 10 道题。