您的位置:首页 > 财经 > 金融 > 好看的商标logo设计_整套网站建设_广州seo推广公司_百度爱采购推广效果怎么样?

好看的商标logo设计_整套网站建设_广州seo推广公司_百度爱采购推广效果怎么样?

2024/12/23 10:16:53 来源:https://blog.csdn.net/weixin_45433817/article/details/143164020  浏览:    关键词:好看的商标logo设计_整套网站建设_广州seo推广公司_百度爱采购推广效果怎么样?
好看的商标logo设计_整套网站建设_广州seo推广公司_百度爱采购推广效果怎么样?

Java 20发布于2023年3月21日,共七个新特性:

  • JEP 429:Scoped Values (Incubator)作用域值 (第一轮孵化)

  • JEP 432:Record Patterns (Second Preview)记录模式 (第二次预览)

  • JEP 433:Pattern Matching for switch (Fourth Preview) Switch的模式匹配(第四次预览)

  • JEP 434:Foreign Function & Memory API (Second Preview)外部函数和内存 API(第二次预览)

  • JEP 436:Virtual Threads (Second Preview) 虚拟线程 (第二次预览)

  • JEP 437:Structured Concurrency (Second Incubator)结构化并发 (第二次孵化)

  • JEP 438:Vector API (Fifth Incubator)向量 API(第五轮孵化)

更多内容读者可自行阅读:OpenJDK Java 20文档

一、 JEP 429:作用域值 (第一轮孵化)

该特性会在Java 21进行首次预览,具体内容可参考Java 21对该特性的介绍。

二、 JEP 432:记录模式(第二次预览)

  • 记录模式由 JEP 405 作为预览功能提出,并在 JDK 19 中提供。

  • 此 JEP 提出了第二个预览版,并根据持续的经验和反馈进行了进一步改进。

Java 20对记录模式进一步增强:

  • 支持对泛型记录模式的类型参数推断。

  • 允许记录模式出现在for语句中。

  • 删除对命令记录模式的支持。

就说下第二个改进点吧:

public record Point(int x, int y) {}void dump(Point[] points){//records模式for (Point(var x, var y) : points) {System.out.println(x + " " + y);}
}

ps:这个改进点在Java 21中被废弃

三、 JEP 433:Switch的模式匹配(第四次预览)

  • Swicth模式匹配由JEP 406作为预览功能提出并在JDK 17中交付。

  • 由JEP 420作为第二个预览提出并在JDK 18中交付。

  • 由JEP 427作为第三个预览提出并在JDK 19中交付。

  • 这个JEP提出了第四个预览,以使其与记录模式预览功能(JEP 432)继续共同发展,并允许基于持续的经验和反馈进行其他改进

Java 20相对重要改进:由原先抛IncompatibleClassChangeError变为抛MatchException

四、 JEP 434:外部函数和内存API(第二次预览)

外部函数和内存(FFM)API结合了两个早期的孵化API:外部内存访问API(JEPs 370、383和393)和外部链接器API(JEP 389)。

  • FFM API 通过 JEP 412 在 JDK 17 中孵化。

  • 通过 JEP 419 在 JDK 18 中重新孵化。

  • 首次通过 JEP 424 在 JDK 19 中预览。

  • 此 JEP 建议根据反馈进行改进,并在 JDK 20 中重新预览 API。

Java 20主要有三个改进点:

  • MemorySegment 和 MemoryAddress 抽象是统一的(内存地址现在由零长度内存段建模)。

  • 封闭的 MemoryLayout 层次结构得到了增强,以便于在 switch 表达式和语句中使用模式匹配 (JEP 433)。

  • MemorySession 已拆分为 Arena 和 SegmentScope,以便于跨维护边界共享段。

五、JEP 436:虚拟线程 (第二次预览)

参考Java 21的虚拟线程是怎么回事。

六、JEP 437: 结构化并发 (第二轮孵化)

  • 结构化并发由 JEP 428 提出,并在 JDK 19 中作为孵化 API 提供。

  • 此 JEP 建议在 JDK 20 中重新孵化 API,无需更改。

Java 20对这一特性进行了微调,以下内容摘自Java 19对结构化并发的介绍:

Java 19引入了结构化并发,一种多线程编程方式,目的是为了通过结构化并发API来简化多线程编程,目前处于孵化阶段。

结构化并发 API 的主要类是 StructuredTaskScope。这个类允许开发者将一个任务组织成一组并发子任务,并将它们作为一个整体进行协调。子任务在各自的线程中执行,通过分别分叉(fork)它们,然后作为一个整体进行合并(join),并且可能作为一个整体进行取消。子任务的成功结果或异常由父任务进行聚合和处理。StructuredTaskScope 将子任务或分叉的生命周期限制在一个明确的词法范围内,在这个范围内,任务与其子任务的所有交互——包括分叉、合并、取消、处理错误和结果组合——都发生在此范围内。

StructuredTaskScope一般工作流程如下:

  • 创建一个作用域(scope)。创建作用域的线程是它的所有者。

  • 在作用域中分叉(fork)并发子任务。

  • 作用域中的任何分叉或作用域的所有者都可以调用作用域的 shutdown() 方法来请求取消所有剩余的子任务。

  • 作用域的所有者作为一个整体加入作用域,即所有分叉。所有者可以调用作用域的 join() 方法,该方法会阻塞直到所有分叉要么完成(成功或失败),要么通过 shutdown() 被取消。或者,所有者可以调用作用域的 joinUntil(java.time.Instant) 方法,该方法接受一个截止时间。

  • 加入后,处理任何分叉中的错误并处理它们的结果。

  • 关闭作用域,通常通过 try-with-resources 隐式完成。这会关闭作用域并等待任何滞后的分叉完成。

这是官方给的一个示例:

Response handle() throws ExecutionException, InterruptedException {try (var scope = new StructuredTaskScope.ShutdownOnFailure()) {//使用fork方法派生线程来执行任务Future<String> user  = scope.fork(() -> findUser());Future<Integer> order = scope.fork(() -> fetchOrder());
​scope.join();           // 将两个fork合并scope.throwIfFailed();  // ...出现异常(抛异常)
​// 代表这两个fork都成功了,组合它们的结果。return new Response(user.resultNow(), order.resultNow());}
}

七、JEP 438:向量 API(第五轮孵化)

  • 向量 API最初由JEP 338提出,并作为孵化API集成到JDK 16中。

  • 第二轮孵化由JEP 414提出,并集成到JDK 17中。

  • 第三轮孵化由JEP 417提出,并集成到JDK 18中。

  • 第四轮孵化由JEP 426提出,并集成到JDK 19中。

此JEP建议在JDK 20中重新孵化API,相对于JDK 19,API没有任何更改。这个在Java 16时介绍过,这里就不再赘述了。

End:希望对大家有所帮助,如果有纰漏或者更好的想法,请您一定不要吝啬你的赐教🙋。 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com