【值得一看的新特性】JDK21

2024-06-09 18:36
文章标签 特性 jdk21 值得一看

本文主要是介绍【值得一看的新特性】JDK21,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1. JEP 425: 虚拟线程 (Virtual Threads)
    • 1.1 是什么
    • 1.2 为什么
    • 1.3 怎么用
  • 2. JEP 428: 结构化并发 (Structured Concurrency)
    • 2.1 是什么
    • 2.2 为什么
    • 2.3 怎么用
  • 3. JEP 440: Record模式 (Record Patterns)
    • 3.1 是什么
      • Record类型
    • 3.2 为什么
    • 3.3 怎么用
  • 4. JEP 427: switch语句中的模式匹配 (Pattern Matching for switch)
    • 4.1 是什么
    • 4.2 为什么
    • 4.3 怎么用
  • 5. JEP 424: 外部函数和内存API (Foreign Function & Memory API)
    • 5.1 是什么
    • 5.2 为什么
    • 5.3 怎么用

1. JEP 425: 虚拟线程 (Virtual Threads)

1.1 是什么

虚拟线程是一种轻量级的线程实现,它允许Java程序创建数以百万计的线程而不会显著增加资源消耗。这些线程由JVM管理,而不需要操作系统的线程支持。

1.2 为什么

虚拟线程的引入是为了提高应用程序的并发性能,特别是在I/O密集型应用中。传统的线程模型在高并发时会受到操作系统资源限制,而虚拟线程可以减少这种限制,从而提高程序的吞吐量和响应性。

1.3 怎么用

在Java 21中,您可以使用java.lang.Thread的新方法来创建和管理虚拟线程。例如:

Thread.startVirtualThreadGroup(() -> {// 这里是虚拟线程的执行代码
});

2. JEP 428: 结构化并发 (Structured Concurrency)

2.1 是什么

结构化并发是一种编程模型,它通过一组新的API和规范,帮助开发者以更结构化的方式编写和管理并发代码。

2.2 为什么

结构化并发旨在简化并发编程的复杂性,提高代码的可读性和可维护性。它通过限制并发任务的执行顺序,使得并发逻辑更加清晰和可控。

2.3 怎么用

结构化并发的具体用法可能需要依赖于Java 21中提供的API。开发者需要遵循特定的编程模式,例如使用ExecutorService来管理线程池,并使用Future来处理异步任务的结果。

3. JEP 440: Record模式 (Record Patterns)

3.1 是什么

Record模式是一种新的模式匹配方式,它允许在instanceofswitch语句中使用Record类型进行匹配,并从中提取字段值。

Record类型

它是Java的一个新特性,首次引入是在Java 14中,作为Project Amber的一部分。Record类型是一种新的类定义形式,它用于创建不可变的容器类,用于存储简单的数据结构。使用record关键字可以非常简洁地声明一个类,并且这个类会自带一些常用的方法,比如equals()hashCode()toString()等。

Record类型的主要特点包括:

  1. 不可变性:Record类型的实例一旦创建,其状态就不能被修改。
  2. 简洁性:自动生成构造函数、getter方法、equals()hashCode()toString()方法。
  3. 声明性:通过简洁的语法声明类,减少样板代码。
  4. 组件:Record类型可以包含组件,这些组件是类的公共final字段。

Record类型的声明格式大致如下:

record 类名(类型1 成员1, 类型2 成员2, ...) {// 可以包含其他方法或初始化代码块
}

例如:

record Person(String name, int age) {// 可以添加额外的方法或代码块
}

这个简单的Person类就包含了两个组件:nameage,并且自动提供了构造函数和访问器方法。

在后续的Java版本中,Record类型得到了进一步的增强,比如在Java 16中增加了模式匹配(Pattern Matching)的支持,允许使用instanceofswitch语句对Record类型的实例进行模式匹配。

3.2 为什么

Record模式的引入是为了利用Java的记录类型(record types)简化对象匹配和解构的过程,使得代码更加简洁和易于理解。

3.3 怎么用

使用Record模式,您可以在instanceofswitch语句中进行模式匹配,例如:

record Point(int x, int y) {}// 使用Record模式进行模式匹配
if (obj instanceof Point(int x, int y)) {System.out.println("X: " + x + ", Y: " + y);
}

4. JEP 427: switch语句中的模式匹配 (Pattern Matching for switch)

4.1 是什么

这个特性允许在switch语句中使用模式匹配,而不仅仅是常量或枚举值。

4.2 为什么

模式匹配的引入使得switch语句更加灵活和强大,能够处理更复杂的数据类型和情况。

4.3 怎么用

在Java 21中,您可以使用模式匹配来简化switch语句,例如:

switch (obj) {case String s -> System.out.println("String: " + s);case Integer i -> System.out.println("Integer: " + i);// 其他情况...
}

5. JEP 424: 外部函数和内存API (Foreign Function & Memory API)

5.1 是什么

这个特性允许Java程序调用非Java语言编写的函数,并提供了直接操作内存的API。

5.2 为什么

外部函数和内存API的引入是为了提高Java与其他语言的互操作性,并允许Java程序更接近硬件层面的操作。

5.3 怎么用

使用外部函数和内存API,您可以在Java中调用C/C++等语言编写的函数,以及直接操作内存。具体的用法可能需要依赖于Java 21中提供的API和库。

参考第20章 Java新特性
视频课:600-第十五章Java9到Java21新特性概述_哔哩哔哩_bilibili 老杜指定的几个值得深挖的特性

这篇关于【值得一看的新特性】JDK21的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1045969

相关文章

ActiveMQ—消息特性(延迟和定时消息投递)

ActiveMQ消息特性:延迟和定时消息投递(Delay and Schedule Message Delivery) 转自:http://blog.csdn.net/kimmking/article/details/8443872 有时候我们不希望消息马上被broker投递出去,而是想要消息60秒以后发给消费者,或者我们想让消息没隔一定时间投递一次,一共投递指定的次数。。。 类似

PostgreSQL核心功能特性与使用领域及场景分析

PostgreSQL有什么优点? 开源和免费 PostgreSQL是一个开源的数据库管理系统,可以免费使用和修改。这降低了企业的成本,并为开发者提供了一个活跃的社区和丰富的资源。 高度兼容 PostgreSQL支持多种操作系统(如Linux、Windows、macOS等)和编程语言(如C、C++、Java、Python、Ruby等),并提供了多种接口(如JDBC、ODBC、ADO.NET等

详解Tomcat 7的七大新特性和新增功能(1)

http://developer.51cto.com/art/201009/228537.htm http://tomcat.apache.org/tomcat-7.0-doc/index.html  Apache发布首个Tomcat 7版本已经发布了有一段时间了,Tomcat 7引入了许多新功能,并对现有功能进行了增强。很多文章列出了Tomcat 7的新功能,但大多数并没有详细解释它们

如何掌握面向对象编程的四大特性、Lambda 表达式及 I/O 流:全面指南

这里写目录标题 OOP语言的四大特性lambda输入/输出流(I/O流) OOP语言的四大特性 面向对象编程(OOP)是一种编程范式,它通过使用“对象”来组织代码。OOP 的四大特性是封装、继承、多态和抽象。这些特性帮助程序员更好地管理复杂的代码,使程序更易于理解和维护。 类-》实体的抽象类型 实体(属性,行为) -》 ADT(abstract data type) 属性-》成

《C++标准库》读书笔记/第一天(C++新特性(1))

C++11新特性(1) 以auto完成类型自动推导 auto i=42; //以auto声明的变量,其类型会根据其初值被自动推倒出来,因此一定需要一个初始化操作; static auto a=0.19;//可以用额外限定符修饰 vector<string> v;  auto pos=v.begin();//如果类型很长或类型表达式复杂 auto很有用; auto l=[] (int

12C 新特性,MOVE DATAFILE 在线移动 包括system, 附带改名 NID ,cdb_data_files视图坏了

ALTER DATABASE MOVE DATAFILE  可以改名 可以move file,全部一个命令。 resue 可以重用,keep好像不生效!!! system照移动不误-------- SQL> select file_name, status, online_status from dba_data_files where tablespace_name='SYSTEM'

Cmake之3.0版本重要特性及用法实例(十三)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+AOSP14系统攻城狮入门视频实战课 🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧

Java8特性:分组、提取字段、去重、过滤、差集、交集

总结下自己使用过的特性 将对象集合根据某个字段分组 //根据id分组Map<String, List<Bean>> newMap = successCf.stream().collect(Collectors.groupingBy(b -> b.getId().trim())); 获取对象集合里面的某个字段的集合 List<Bean> list = new ArrayList<>

【JVM】JVM栈帧中的动态链接 与 Java的面向对象特性--多态

栈帧 每一次方法调用都会有一个对应的栈帧被压入栈(虚拟机栈)中,每一个方法调用结束后,都会有一个栈帧被弹出。 每个栈帧中包括:局部变量表、操作数栈、动态链接、方法返回地址。 JavaGuide:Java内存区域详解(重点) 动态链接 动态链接:指向运行时常量池中该栈帧所属方法的引用。 多态 多态允许不同类的对象对同一消息做出响应,但表现出不同的行为(即方法的多样性)。 多态

HCIA--实验十:路由的递归特性

递归路由的理解 一、实验内容 1.需求/要求: 使用4台路由器,在AR1和AR4上分别配置一个LOOPBACK接口,根据路由的递归特性,写一系列的静态路由实现让1.1.1.1和4.4.4.4的双向通信。 二、实验过程 1.拓扑图: 2.步骤: (下列命令行可以直接复制在ensp) 1.如拓扑图所示,配置各路由器的基本信息: 各接口的ip地址及子网掩码,给AR1和AR4分别配置