原创转载请注明出处:http://agilestyle.iteye.com/blog/2344621
getRegisteredParties()
getRegisteredParties()作用是获得注册的parties数量
register()
register()作用是动态添加一个parties值
PhaserTest6.java
package org.fool.java.concurrent.phaser; import java.util.concurrent.Phaser; public class PhaserTest6 { public static void main(String[] args) { Phaser phaser = new Phaser(5); System.out.println(phaser.getRegisteredParties()); phaser.register(); System.out.println(phaser.getRegisteredParties()); phaser.register(); System.out.println(phaser.getRegisteredParties()); phaser.register(); System.out.println(phaser.getRegisteredParties()); phaser.register(); System.out.println(phaser.getRegisteredParties()); phaser.register(); System.out.println(phaser.getRegisteredParties()); } }
Run
bulkRegister(int parties)
bulkRegister(int parties)作用是批量增加parties的数量
PhaserTest10.java
package org.fool.java.concurrent.phaser; import java.util.concurrent.Phaser; public class PhaserTest10 { public static void main(String[] args) { Phaser phaser = new Phaser(5); System.out.println(phaser.getRegisteredParties()); phaser.bulkRegister(10); System.out.println(phaser.getRegisteredParties()); phaser.bulkRegister(10); System.out.println(phaser.getRegisteredParties()); phaser.bulkRegister(10); System.out.println(phaser.getRegisteredParties()); phaser.bulkRegister(10); System.out.println(phaser.getRegisteredParties()); } }
Run
getArrivedParties()
getArrivedParties()作用是获得已经被使用的parties的个数
getUnarrivedParties()
getUnarrivedParties()作用是获得未被使用的parties的个数
PhaserTest7.java
package org.fool.java.concurrent.phaser; import java.util.concurrent.Phaser; public class PhaserTest7 { public static class MyThread implements Runnable { private Phaser phaser; public MyThread(Phaser phaser) { this.phaser = phaser; } @Override public void run() { System.out.println(Thread.currentThread().getName() + " begin " + System.currentTimeMillis()); phaser.arriveAndAwaitAdvance(); System.out.println(Thread.currentThread().getName() + " end " + System.currentTimeMillis()); } } public static void main(String[] args) { try { Phaser phaser = new Phaser(10); for (int i = 0; i < 8; i++) { Thread thread = new Thread(new MyThread(phaser)); thread.setName("Thread " + (i + 1)); thread.start(); } Thread.sleep(3000); System.out.println(phaser.getArrivedParties()); System.out.println(phaser.getUnarrivedParties()); } catch (InterruptedException e) { e.printStackTrace(); } } }
Run
Reference
Java并发编程核心方法与框架