DZone Java
全面拥抱JVM 25虚拟线程
AngularAndSpring项目已从Spring Reactor重构为使用JDK 25和虚拟线程的Spring阻塞式API。旧架构采用Reactor是为了在高负载下高效利用操作系统线程和内存,但响应式编程风格随复杂度增加而难以阅读,堆栈跟踪也难以排查错误。JDK 25虚拟线程改变了权衡:操作系统线程仅在需要时使用,虚拟线程可从OS线程卸载,内存占用极低,少量OS线程即可支撑大量虚拟线程,且synchronized支持问题已修复,使JVM原生具备响应式框架的可扩展性和效率。新架构使用Spring WebMVC提供阻塞式REST端点,Spring RestClient调用外部REST服务,Spring Data MongoDB访问数据库,并通过spring.threads.virtual.enabled=true启用虚拟线程。REST端点直接返回预期类型,不再使用Reactor包装类型;长时间重算小时和日线报价时使用独立的虚拟线程池,避免阻塞用户请求。结论是,许多使用响应式编程的理由已消失,阻塞式模型更易实现和调试,Spring Data MongoDB也让数据库访问更简单。