在本教程中,我们将讨论 Java SE 19 中的新预览特性 JEP-405:记录模式。我们将看到如何分解记录值以及如何将记录模式与类型模式结合起来使用。
我们将使用以下两个记录:一个名为 GPSPoint 的记录,它包含 latitude 和 longitude:
public record GPSPoint(double latitude, double longitude) {}
在本教程中,我们将讨论 Java SE 19 中的新预览特性 JEP-405:记录模式。我们将看到如何分解记录值以及如何将记录模式与类型模式结合起来使用。
我们将使用以下两个记录:一个名为 GPSPoint 的记录,它包含 latitude 和 longitude:
public record GPSPoint(double latitude, double longitude) {}
Vector API 是 Java 生态系统中的一个孵化 API,用于在支持的 CPU 架构上用 Java 表达向量计算。它旨在提供优于等价标量替代方案的向量计算性能提升。
在 Java 19 中,作为 JEP 426 的一部分,提出了 Vector API 的第四轮孵化。
在本教程中,我们将探索 Vector API、其相关术语以及如何利用这个 API。
在深入研究 Vector API 之前,理解 CPU 操作中的标量和向量的概念非常重要。
在本简短的教程中,我们将看到如何在Spring Boot应用程序中利用虚拟线程的强大功能。
由Project Loom引入,并作为Java 19的预览功能提供,虚拟线程现在是官方JDK 21发布的一部分。此外,Spring 6发布集成了这一令人敬畏的功能,并允许开发人员尝试使用它。
首先,我们将看到“平台线程”和“虚拟线程”之间的主要区别。接下来,我们将使用虚拟线程从头开始构建一个Spring Boot应用程序。最后,我们将创建一个小型测试套件,以查看简单Web应用程序的吞吐量是否有所提高。
在本教程中,我们将讨论孵化器特性结构化并发(JEP 428),它为Java 19提供了结构化并发的能力。我们将指导您使用新的API来管理多线程代码。
通过采用减少线程泄漏和取消延迟可能性的并发编程风格,增强多线程代码的可维护性、可靠性和可观察性,这些是与取消和关闭相关的常见风险。为了更好地理解非结构化并发的问题,让我们看一个例子:
Future``<Shelter>`` shelter;
Future`<List```<Dog>````> dogs;
try (ExecutorService executorService = Executors.newFixedThreadPool(3)) {
shelter = executorService.submit(this::getShelter);
dogs = executorService.submit(this::getDogs);
Shelter theShelter = shelter.get(); // 等待shelter
List```<Dog>``` theDogs = dogs.get(); // 等待dogs
Response response = new Response(theShelter, theDogs);
} catch (ExecutionException | InterruptedException e) {
throw new RuntimeException(e);
}