Java 8 如何实现 Virtual Threads 效果

Virtual Threads for a scripting language in Java 8 without Loom

Java 8 如何实现 Virtual Threads 效果

在 Java 21 推出 Virtual Threads 之前,我开发 Jactl 时就面临一个难题:如何在 Java 8 环境下让脚本执行阻塞操作时不卡死事件循环线程。我的解决方案是利用 Continuations 机制,通过抛出特殊的 Continuation 异常来保存执行状态,待操作完成后再恢复。这种方法让 Jactl 脚本在调用 sleep 或数据库请求时能自动挂起并释放线程,完美适配 Vert.x 等响应式架构。如今虽然 Java 21 原生支持 Virtual Threads,但这一机制让旧版本应用也能享受非阻塞编程的便利,甚至支持将脚本状态序列化进行断点续传。

只要抛出的异常不生成堆栈跟踪,其实际开销非常低。

同日更多故事

2026-09-04