超链接 网站,wordpress主题是什么,WordPress去掉管理员邮箱,南阳网站优化渠道Phaser是并发包juc.concurrent包下的一个关于线程同步和线程通信的一个工具类#xff0c;类似于CountDownLanch 和 CyclicBarrier#xff0c;不同的是 Phaser可以用来根据步骤#xff0c;等待线程按步骤同时触发执行。
package com.example.test;import com.example.abstra…Phaser是并发包juc.concurrent包下的一个关于线程同步和线程通信的一个工具类类似于CountDownLanch 和 CyclicBarrier不同的是 Phaser可以用来根据步骤等待线程按步骤同时触发执行。
package com.example.test;import com.example.abstractClass.B;import java.util.concurrent.Phaser;public class A extends B {void a2() {super.a();}public static void main(String[] args) {// Phaser 参数为维护线程个数Phaser phaser new Phaser(10) {Overrideprotected boolean onAdvance(int phase, int registeredParties) {System.out.println(phase: phase registeredParties: registeredParties);return phase 10;}};for (int i 0; i 10; i) {Thread thread new Thread(new C(phaser), Thread i);thread.start();}}
}class C implements Runnable {private Phaser phaser;public C(Phaser phaser) {this.phaser phaser;}Overridepublic void run() {System.out.println(Thread.currentThread().getName() do something 1 );phaser.arriveAndAwaitAdvance();System.out.println(Thread.currentThread().getName() do something 2 );phaser.arriveAndAwaitAdvance();System.out.println(Thread.currentThread().getName() do something 3 );phaser.arriveAndAwaitAdvance();System.out.println(Thread.currentThread().getName() do something 4 );phaser.arriveAndAwaitAdvance();System.out.println(Thread.currentThread().getName() do something 5 );phaser.arriveAndAwaitAdvance();System.out.println(Thread.currentThread().getName() do something 6 );phaser.arriveAndAwaitAdvance();}
}打印查看 Phaser的 onAdvance(int phase, int registeredParties) 方法phase指的是 phaser.arriveAndAwaitAdvance() 方法执行的次数在创建Phaser的构造参数中入参指的是参与维护线程的数量