AbstractQueuedSychronizer
在AQS中维护着一个FIFO的同步队列。
一般步骤:
1、线程尝试获取同步状态,如果成功则返回;如果失败、,则会封装成Node加入到同步队列的队尾,并一直保持着自旋。
2、在CLH同步队列中的线程在自旋时,会判断其前驱节点是否为首节点,如果为首节点则不断尝试获取同步状态, 获取成功则退出CLH同步队列。
3、当线程执行完逻辑后,会释放同步状态,释放后会唤醒其后继节点
ForkJoin
基于JDK的ForkJoin构建一个简单易用的并发组件
https://juejin.im/post/5acb6cbc6fb9a028bc2e0d42
并发编程模型
并发模型指定了系统中的线程如何通过协作来完成分配给它们的作业。 不同的并发模型采用不同的方式拆分作业,同时线程间的协作和交互方式也不相同。