JDK 24 如何解决虚拟线程的同步绑定难题?
郑雨迪

你好,我是郑雨迪。
Java 线程是 Java 程序执行的基本单位,相信大家对此并不陌生。JVM 允许应用程序同时运行多个线程,从而实现并发执行。
传统的 Java 线程依赖操作系统的原生线程,由操作系统负责调度和管理。这类线程的内存开销较大,单个线程的栈空间通常超过 1MB(可通过 -Xss 或 -XX:ThreadStackSize 进行调整,最小值为 1MB)。
例如,在 Web 服务器中,如果为每个请求创建一个 Java 线程,处理百万级别的请求将消耗超过 1TB 的内存用于栈空间,这在实际应用中难以承受。
因此,JVM 能够创建的线程数量受限,难以满足高并发场景的需求,与主流的异步编程模型存在一定冲突。
虚拟线程
平台线程本质上仍是原来的 Java 线程,同样与操作系统的原生线程一一映射,并且需要固定的大容量栈空间,因此 JVM 能够创建的平台线程数量十分有限。
相比之下,虚拟线程采用了可变栈空间的设计。对于调用层级较浅的简单任务,其栈空间占用极小。这一特性使得 JVM 能够同时创建大量的虚拟线程,从而支持 “一个任务一个线程” 的编程模型,提高并发能力。
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结

1. JDK 24 的 JEP 491 解决了虚拟线程在同步操作时被绑定到平台线程的问题,提升了系统的并发能力。 2. JEP 491 重新设计了 Java 的同步机制,使锁的所有权直接关联虚拟线程,而非平台线程,从根本上解决了虚拟线程与平台线程绑定的问题。 3. 虚拟线程的卸载不再受限于 Java 层面,JVM 可直接在虚拟机内部触发虚拟线程的卸载,进一步提升了虚拟线程的可扩展性。 4. 通过 JEP 491,虚拟线程在 synchronized 代码块内不再绑定到平台线程,有效避免了死锁和线程资源浪费的问题。 5. 未来,Loom 设计者将着手解决可能导致虚拟线程与平台线程绑定的问题,以进一步提升虚拟线程的可扩展性。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入拆解 Java 虚拟机》,新⼈⾸单¥59
《深入拆解 Java 虚拟机》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论