当前位置: 首页 > news >正文

JDK19特性

JDK19特性

一、JAVA19概述

  JDK 19 2022 年 9 月 20 日正式发布以供生产使用,非长期支持版本。不过,JDK 19 中有一些比较重要的新特性值得关注。

image.png

JDK 19 只有 7 个新特性:

  • JEP 405: Record Patterns(记录模式)[1] (预览)
  • JEP 422: Linux/RISC-V Port[2]
  • JEP 424: Foreign Function & Memory API(外部函数和内存 API)[3] (预览)
  • JEP 425: Virtual Threads(虚拟线程)[4] (预览)
  • JEP 426: Vector(向量)API[5] (第四次孵化)
  • JEP 427: Pattern Matching for switch(switch 模式匹配)[6]
  • JEP 428: Structured Concurrency(结构化并发)[7] (孵化)

二、新特性介绍

1. 记录模式

  使用 记录模式 增强 Java 编程语言以解构记录值,可以嵌套记录模式和类型模式,实现强大的、声明性的和可组合的数据导航和处理形式。

注意:
这是一个预览版本。

2.Linux/RISC-V 移植

将 JDK 移植到 Linux/RISC-V,目前仅支持 RISC-V 的 RV64GV 配置(包含向量指令的通用 64 位 ISA)。将来可能会考虑支持其他 RISC-V 配置,例如通用 32 位配置 (RV32G)。

3.外部函数和内存 API

引入一个 API,Java 程序可以通过该 API 与 Java 运行时之外的代码和数据进行互操作。通过该 API
可有效地调用外部函数( JVM 之外的代码)和安全地访问外部内存(不受 JVM 管理的内存),使得 Java
程序能够调用本机库并处理本机数据,而不会出现 JNI 的脆弱性和危险。

注意:
这是个预览版 API 。

4.虚拟线程(预览版)

image.png

  JVM线程跟操作系统线程是一一对应的关系,线程真正的执行需要等到OS分配资源进行调度。因此操作系统对线程数量的限制也影响JVM线程数量。Centos7 修改操作系统线程数量大小方法.

# vim /etc/security/limits.d/20-nproc.conf
* soft nproc 65535
* hard nproc 65535

虚拟线程:

image.png

  针对上述JVM线程限制的问题,JDK19提供虚拟线程的方式,可以在一定程度上突破线程数量大小的限制(借鉴了golang goroutine的设计思想)。在JDK19中线程分为平台线程(Platform Thread)、虚拟线程(Virtual Thread).

  如上图所示,虚拟线程完全归JVM管理,不受操作系统限制,因此JVM可以生成大量的虚拟线程执行业务逻辑,从而提供系统的吞吐量。

注意:
该特性目前尚不成熟,不建议在生产环境中使用。

案例代码:

    
http://www.lryc.cn/news/379084.html

相关文章:

  • sql语句中常用的函数有那些
  • odoo17 小变更3 Warning、 “attrs “和 “states “不再用
  • Unity3d 游戏暂停(timeScale=0)引起的deltaTime关联的系列问题解决
  • 服务端代码编写中MySql大小写在Java中报错问题解决
  • CRMEB 多店商品详情页装修说明
  • Redis-使用 jedis 操作数据
  • 简说PIP换源
  • django学习入门系列之第三点《CSS基础样式介绍2》
  • 分布式光纤测温DTS在工程现场中稳定性与可靠性如何?
  • PHP多线程模块parallel的编译安装和多线程编程演示
  • 记录grid布局属性
  • 12.爬虫---PyMysql安装与使用
  • VS2022遇到的两个问题
  • 【Android14 ShellTransitions】(六)SyncGroup完成
  • 技术管理转型之战:决策之道-管理中的智慧与策略
  • Shell脚本:条件语句(if、case)
  • 在Linux上为Windows目标配置Qt交叉编译
  • Introduction to linear optimization 第 2 章课后题答案 11-15
  • Java——包
  • Pipeline知识小记
  • postman国内外竞争者及使用详解分析
  • 人工智能对决:ChatGLM与ChatGPT,探索发展历程
  • 探索Python元类的奥秘及其应用场景
  • C语言基础关键字的含义和使用方法
  • 【Golang - 90天从新手到大师】Day09 - string
  • 网络安全与区块链技术:信任与安全的融合
  • MySQL之复制(九)
  • 【面试干货】 Java 中的 HashSet 底层实现
  • 爬虫经典案例之爬取豆瓣电影Top250(方法二)
  • 如何优化React应用的性能?