其他分享
首页 > 其他分享> > forkJoin提交任务执行流程

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