Java 18都要来了,你不会还在用Java 8吧?

Java 开发工具包 (JDK) 18 将于 2022 年 3 月 22 日发布。新版本的标准 Java 将有九个新特性,该特性集已于 12 月 9 日冻结,进入 Rampdown 第一阶段。

值得注意的是:JDK 17 是一个长期支持 (LTS) 版本,将获得 Oracle 至少八年的支持,但 JDK 18 将是一个短期功能版本,只支持六个月。可以在 java.net( https://jdk.java.net/18/ ) 上找到适用于 Linux、Windows 和 MacOS 的 JDK 18 的尝鲜版本。

JDK 18 新功能一览:

  • JEP 400:指定 UTF-8 作为标准 Java API 的默认字符集 。通过此更改,依赖于默认字符集的 API 将在所有实现、操作系统、区域设置和配置中保持一致。

  • JEP 408:引入一个简单的 Web 服务器 。提供一个命令行工具,来启动一个只提供静态文件的最小网络服务器,它没有 CGI 或类似 servlet 的功能可用。该工具用于原型设计、临时编码和测试目的,尤其是在教学环境中。

  • JEP 413:支持在 Java API 文档中加入代码片段。 为 JavaDoc 的 Standard Doclet 引入一个  @snippet  标记,以简化 API 文档中嵌入示例源代码的难度。

  • JEP 416 :用方法句柄重新实现核心反射。 在  java.lang.invoke  的方法句柄之上, 重构  java.lang.reflect  的方法 、构造函数和字段 , 使用方法句柄处理反射的底层机制将减少 java.lang.reflect 和 java.lang.invoke 两者的 API 维护和开发成本。

  • JEP 417:Vector API(第三孵化器)。 引入一个 API 来表达向量计算,这些计算在运行时可以编译为支持的 CPU 架构上的最佳向量指令,从而实现优于等效标量计算的性能。

  • JEP 418:互联网地址解析 SPI 。定义用于主机名和地址解析的服务提供者接口 (SPI),以便 java.net.InetAddress 可以使用平台内置解析器以外的解析器。

  • JEP 419:外部函数和内存 API(第二孵化器)。 引入了一个新 API, Java 程序可以通过它与 Java 运行时之外的代码和数据进行互操作。通过有效地调用外部函数(即 JVM 外的代码),并安全地访问外部内存(即不由 JVM 管理的内存), 外部函数和内存  API 使 Java 程序能够调用本机库并处理本机数据,而不具有 JNI 的脆弱性和危险。

  • JEP 420:switch 模式匹配表达式。 使用  switch  表达式和语句的模式匹配以及对模式语言的扩展来增强 Java 编程语言。 将模式匹配扩展到  switch   允许针对多个模式测试表达式,每个模式都有特定的操作,可以简洁安全地表达复杂的面向数据的查询。

  • JEP 421:弃用 Finalization 功能 。 Java 1.0 中引入的  Finalization  旨在帮助避免资源泄漏问题,然而 这个功能存在 延迟不可预测、行为不受约束,以及线程无法指定 等缺陷,导致其 安全性、性能、可靠性和可维护性方面都存在问题, 因此将其弃用,用户可选择迁移到其他资源管理技术,例如 try -with-resources 语句和清洁器。

2022 年 1 月 20 日会进入  Rampdown  第二阶段, 初始和最终候选(RC)版本将分别于明年 2 月 10 日和 2 月 24 日发布,稳定版 JDK 18 将在  2022 年 3 月 22 日发布,可在 JDK 公告页中查看最新消息。

Java 中使用 `Runnable` 接口实现线程池,可按以下方式操作。首先要创建一个实现 `Runnable` 接口的类,重写 `run()` 方法,该方法中定义线程要执行的任务。然后,使用 `Executors` 类创建线程池,将实现了 `Runnable` 接口的类的实例提交给线程池执行。 以下是一个示例代码: ```java import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; // 实现 Runnable 接口的类 class MyRunnable1 implements Runnable { @Override public void run() { System.out.println("我要一个教练"); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("教练来了" + Thread.currentThread().getName()); System.out.println("教练走了"); } } public class test03ThreadExecutor { public static void main(String[] args) { // 创建线程池,中有三个线程对象 ExecutorService executorService = Executors.newFixedThreadPool(3); MyRunnable1 myRunnable = new MyRunnable1(); executorService.submit(myRunnable); executorService.submit(myRunnable); executorService.submit(myRunnable); // 关闭线程池 executorService.shutdown(); } } ``` 在上述代码中,`MyRunnable1` 类实现了 `Runnable` 接口,重写了 `run()` 方法,定义了线程要执行的任务。在 `main` 方法中,使用 `Executors.newFixedThreadPool(3)` 创建了一个包含三个线程的线程池,将 `MyRunnable1` 类的实例提交给线程池执行,最后调用 `executorService.shutdown()` 关闭线程池[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值