首页 科技开发工具 娱乐游玩工具 热门工具   APP 登录/注册 联系/合作
   
 
JEP 444:虚拟线程抵达 JDK 21,开创并发新时代
JEP 444,Virtual Threads,从JDK 21 的 Candidate 提升到 Proposed到Target状态。此功能提供虚拟线程,轻量级线程,可显着减少在 Java 平台上编写、维护和观察高吞吐量并发应用程序的工作量。本 JEP 打算根据前两轮预览的反馈最终确定此功能:JEP 436,Virtual Threads (Second Preview),在 JDK 20 中交付;和 JEP 425,虚拟线程(预览版),在 JDK 19 中提供。

通过这个 JEP,Java 现在有两种类型的线程:传统线程,也称为平台线程和虚拟线程。平台线程是对操作系统线程的一对一包装,而虚拟线程是由 JDK 提供的轻量级实现,可以在同一操作系统线程上运行多个虚拟线程。虚拟线程为平台线程提供了更高效的替代方案,允许开发人员以显着降低的开销处理大量任务。这些线程提供与现有 Java 代码的兼容性和无缝迁移路径,以受益于增强的性能和资源利用率。考虑以下示例:
JDK 现在可以在少量的操作系统 (OS) 线程上运行多达 10,000 个并发虚拟线程,即使只有一个,也可以执行上面涉及休眠一秒钟的简单代码。

虚拟线程旨在与线程局部变量和可继承的线程局部变量一起使用,就像平台线程一样。但是,由于可以创建大量虚拟线程,开发人员应谨慎使用线程局部变量。为了帮助迁移到虚拟线程,JDK 提供了一个系统属性,jdk.traceVirtualThreadLocals它会在虚拟线程设置任何线程局部变量的值时触发堆栈跟踪。

该java.util.concurrent软件包现在包括对虚拟线程的支持。APILockSupport 已更新,可以优雅地停放和取消停放虚拟线程,使使用锁、信号量和阻塞队列等的 APILockSupport能够与虚拟线程无缝运行。和方法提供了一个为每个任务创建一个新线程的方法,促进了迁移以及与使用线程池Executors.newThreadPerTaskExecutor(ThreadFactory)和.Executors.newVirtualThreadPerTaskExecutor()ExecutorServiceExecutorService

和包中的网络 API现在支持虚拟线程,提高了并发应用程序的效率。虚拟线程上的阻塞操作释放了底层平台线程,而 和 类中的 I/O 方法已成为可中断的。此更新促进了使用并发应用程序的 Java 开发人员的一致行为和改进的性能。 java.netjava.nio.channelsSocketServerSocketDatagramSocket

该java.io包为字节流和字符流提供 API,已更新以避免在虚拟线程中使用时固定。Pinning in virtual threads 是指将轻量级线程“卡住”到特定平台线程,由于阻塞操作而限制并发性和灵活性。BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter, PrintStream,PrintWriter现在直接使用显式锁而不是监视器。InputStreamReader和现在使用的流解码器和编码器OutputStreamWriter使用与其封闭的相同的锁InputStreamReaderor OutputStreamWriter。

Java 本机接口 ( JNI ) 引入了一个新函数,IsVirtualThread用于测试对象是否为虚拟线程。JNI 规范在其他方面保持不变。

由 JVM 工具接口 ( JVM TI )、Java 调试线协议 ( JDWP ) 和 Java 调试接口 ( JDI ) 组成的调试架构已更新为支持虚拟线程。所有三个接口现在都支持虚拟线程,并添加了新功能和方法来处理线程启动和结束事件以及虚拟线程的批量挂起和恢复。

JDK Flight Recorder ( JFR ) 现在支持具有新事件的虚拟线程,例如jdk.VirtualThreadStart、、 和。这些事件提供了对应用程序中虚拟线程行为的洞察力。jdk.VirtualThreadEndjdk.VirtualThreadPinnedjdk.VirtualThreadSubmitFailed

Java 管理扩展 ( JMX ) 将继续通过接口仅支持平台线程ThreadMXBean。接口中的新方法HotSpotDiagnosticsMXBean生成新式线程转储以支持虚拟线程。

虽然虚拟线程带来了显着的性能改进,但开发人员应该意识到由于现有 API 及其实现的变化而带来的兼容性风险。其中一些风险包括对java.io包和源代码中的内部锁定协议的修订以及可能影响扩展类的代码的二进制不兼容更改。 Thread

虚拟线程标志着 Java 支持高度并发和可伸缩应用程序的旅程中的一个重要里程碑。借助更高效、更轻量级的线程模型,开发人员现在可以轻松处理数百万个任务并更好地利用系统资源。开发人员可以利用 JEP 425 的更多详细信息,这些信息可以在 InfoQ 的新闻报道和由Oracle Java 平台组的 Java 开发倡导者José Paumard投射的JEP Café屏幕中找到。
最新文章:
所有文章资讯、展示的文字、图片、数字、视频、音频、其它素材等内容均来自网络媒体,仅供学习参考。内容的知识产权归属原始著作权人所有。如有侵犯您的版权,请联系我们并提供相应证明,本平台将仔细验证并删除相关内容。
工具综合排行榜
TOP 1
双计算器 双计算器
同时用两个计算器,用于价格对比、数字分别计算等
TOP 2
推算几天后的日期 推算几天后的日期
推算从某天开始,增加或减少几天后的日期
TOP 3
随机密码生成 随机密码生成
随机生成安全复杂的密码,自由设置密码长度及复杂度
TOP 4
推算孩子的血型 推算孩子的血型
根据父母的血型推测子女的血型
TOP 5
日期转中文大写 日期转中文大写
把数字日期转成中文大写,是财务或商务合同常用的工具
热门内容:       双计算器       推算孩子的血型       随机密码生成       日期转中文大写       推算几天后的日期       达轻每日一景       高校分数线       高校查询       周公解梦大全
首页 科技开发工具大全
娱乐游玩工具大全
登录/注册
联系我们
  用户咨询/建议
kf@ss3316.com


商务合作/推广
hz@ss3316.com

达轻工具 APP

访问手机版网站
使用本平台必读并同意:任何内容仅供谨慎参考,不构成建议,不保证正确,平台不承担任何责任,同意用户协议隐私政策   
BaiduTrust安全认证签章
© 达轻科技 版权所有 增值电信业务经营许可证 ICP备 沪B2-20050023-3