1、类层次图
ctl:
占8个字节
AC:活动工作线程数减去目标并发度
TC:总工作线程数减去目标并发度
SS:版本号及最上层等待线程的状态
ID:等待的Treiber栈顶的池索引
初始值为
this.ctl = ((np << AC_SHIFT) & AC_MASK) | ((np << TC_SHIFT) & TC_MASK),其中np = (long)(-parallelism)
this.config = (parallelism & SMASK) | mode,同步模式时mode=0,异步模式时mode=1<<16
runState:
状态名 | 状态值 |
RSLOCK | 1 |
RSIGNAL | 1<<1 |
STARTED | 1<<2 |
STOP | 1<<29 |
TERMINATED | 1<<30 |
SHUTDOWN | 1<<31 |
2、WorkQueue
工作队列有两类
(1)有工作线程绑定的队列:数组下标为奇数,称为task queue队列中的任务均由工作线程调用产生
(2)没有工作线程绑定的队列:数组下标为偶数,称之为submissions queue,由execute/submit/invoke或者ForkJoinTask.fork产生
scanState:
状态值 | 状态说明 |
<0 | 未激活 |
奇数 | 扫描 |
3、任务提交流程
4、工作线程任务执行流程