2018年10月25日

摘要: ForkJoinPool (以下简称FJP)先看task.fork方法,含义是将当前任务,放到当前线程的工作队列中。但是第一次执行这个方法是在主线程中,主线程是不可能被FJP管理的。那么就进入ForkJoinPool.common.externalPush,在common这个default的线程池里 阅读全文
posted @ 2018-10-25 18:10 chuliang 阅读(827) 评论(0) 推荐(0) 编辑
 
摘要: transfer 扩容是按stride为跨度进行,transferIndex属性是一个互斥量。一个线程进入transfer方法,先保证初始化,进入for循环,获取transferIndex,cas方法向下获取stride个位置的跨度,直到跨度到尽头,说明所有的跨度,要么已经扩容结束,要么正在被扩容, 阅读全文
posted @ 2018-10-25 14:16 chuliang 阅读(170) 评论(0) 推荐(0) 编辑