forkJoin提交任务执行流程
作者:互联网
提交第一个任务
此时内部的工作队列数组workQueues == null
(1) 创建workQueues,此时数组中所有元素都为null, 设置runState = started
(2) 创建工作队列workQueue,在ws的索引值为 k = r & m & SQMASK
r 表示线程的探针哈希值:作用是哈希线程,将线程和数组中的不用元素对应起来,尽量避免线程争用同一数组元素。
探针哈希值和 map 里使用的哈希值的区别是,当线程发生数组元素争用后,可以改变线程的探针哈希值,让线程去使用另一个数组元素。
m 表示数组的长度 - 1
SQMASK = 0xffff (最大的索引值)
(3)将forkJoinTask提交到该工作队列中
(4)创建 or 唤醒 一个worker线程执行任务
标签:哈希,提交,流程,元素,探针,队列,线程,数组,forkJoin 来源: https://www.cnblogs.com/zrzct/p/15731645.html