1import java.util.concurrent.Phaser; 2 3/** 4 * Created by zyBourn on 15/12/25. 5 */ 6public class Entity { 7 /** 8 * 工作方式与CyclicBarrier类似,但是可以定义多个阶段 9 * Phaser()/Phaser(int num):使用指定0/num个party创建Phaser 10 * register():注册party 11 * arriveAndAdvance():到达时等待到所有party到达 12 * arriveAndDeregister():到达时注销想成自己 13 */ 14 public static void main(String[] args) { 15 Phaser phaser=new Phaser(1); 16 new Worker(phaser,"厨师").start(); 17 new Worker(phaser,"服务员").start(); 18 new Worker(phaser,"传菜员").start(); 19 for (int i=1;i<=3;i++){ 20 phaser.arriveAndAwaitAdvance(); 21 System.out.println("订单"+i+"完成!"); 22 } 23 phaser.arriveAndDeregister(); 24 System.out.println("处理完成"); 25 } 26 27} 28 29class Worker extends Thread{ 30 private Phaser phaser; 31 public Worker(Phaser phaser,String name){ 32 setName(name); 33 this.phaser=phaser; 34 phaser.register(); 35 } 36 public void run(){ 37 for (int i = 0; i <=3; i++) { 38 System.out.println("当前的订单是:"+i+":"+getName()); 39 if (i==3){ 40 phaser.arriveAndDeregister(); 41 }else { 42 phaser.arriveAndAwaitAdvance(); 43 } 44 try { 45 Thread.sleep(1000); 46 } catch (InterruptedException e) { 47 e.printStackTrace(); 48 } 49 } 50 } 51}
Phaser 工作方式与CyclicBarrier类似,但是可以定义多个阶段
Stella981
2021-10-11
1091 0 0
点赞
收藏
评论区
加载中...