并发控制工具相位器Phaser实现原理( 三 )

<< PHASE_SHIFT;boolean result = STATE.compareAndSet(this, s, n);}return phase;}} }最后再看onAdvance和isTerminated两个方法 。 onAdvance方法逻辑是注册的参与者数量是否为0 , 返回true表示需要终止相位器 。 isTerminated方法逻辑是直接判断state的值是否小于0 , 小于0则最高位为1 , 也就是long的符号位为1 , 即小于0 。
protected boolean onAdvance(int phase, int registeredParties) {return registeredParties == 0; } public boolean isTerminated() {return this.state < 0L; }更多Java并发原理可关注作者下面的专栏:
【并发控制工具相位器Phaser实现原理】作者简介:笔名seaboat , 擅长人工智能、计算机科学、数学原理、基础算法 。 出版书籍:图解数据结构与算法、Tomcat内核设计剖析、图解Java并发原理、人工智能原理科普 。