JDK21新并发组件


虚拟线程-概述

JDK19实验、JDK21 以后上线 的新功能

基于ForkJoinPool,支持ThreadLocal、线程中断

注意事项

仅适合运行有大量io阻塞的任务,不适合CPU密集型任务

避免使用ThreadLocal

注意虚拟线程固定(pinned)的情况(使用Synchorized、使用native方法)

平迁虚拟线程,不会影响现有现成逻辑的正确性,但可能会影响性能

原理

线程模型

线程需要被调度才能执行任务,本质上是分配到CPU上执行。对于由操作系统线程实现的平台线程,JDK 依赖于操作系统中的调度程序;而对于虚拟线程,JDK 先将虚拟线程分配给平台线程,然后平台线程按照通常的方式由操作系统进行调度。

JDK 的虚拟线程调度器是一个以 FIFO 模式运行的 ForkJoinPool,调度器的默认并行度是可用于调度虚拟线程的平台线程数量,并行度可以通过设置启动参数调整。

基于ForkJoinPool

StructuredTaskScope

原理

参考

1、https://juejin.cn/post/7280746515526058038?searchId=20240706160706A3E3F95BE22DA3D11B4E


文章作者: 王利康
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 王利康 !
  目录