跟着作者的65节课彻底搞懂Java并发原理专栏,一步步彻底搞懂Java并发原理。
作者简介:笔名seaboat,擅长工程算法、人工智能算法、自然语言处理、计算机视觉、架构、分布式、高并发、大数据和搜索引擎等方面的技术,大多数编程语言都会使用,但更擅长Java、Python和C++。平时喜欢看书写作、运动、画画。崇尚技术自由,崇尚思想自由。出版书籍:《Tomcat内核设计剖析》、《图解数据结构与算法》、《图解Java并发原理》、《人工智能原理科普》。
Phaser示意图
为方便理解Phaser的内部状态我们看下面的示意图,刚开始通过 new Phaser(3) 创建一个相位器对象,该对象有三个参与者。假如又调用了register()方法则相位器一共有4个参与者,这些参与者都处于未到达状态。然后某个线程先执行arriveAndAwaitAdvance方法后变为已到达状态,接着第二第三个参与者都变为已到达状态。假如第四个线程执行了arriveAndDeregister方法则第四个参与者到达后将进行反注册,此时只剩三个参与者。接着将进入下一阶段,相位器会自动调用onAdvance方法判断是否终止相位器,如果还未终止则进入下一阶段,此时三个参与者又处于未到达状态。
共享状态的表示
相位器的底层实现需要对共享变量进行维护,并且需要使用硬件基本的CAS操作,相位器需要维护的共享变量包括终止状态、当前阶段数、参与者数量以及未到达数量等四
转载:https://blog.csdn.net/wangyangzhizhou/article/details/109030913
查看评论