Phaser 工作方式与CyclicBarrier类似,但是可以定义多个阶段
Phaser 工作方式与CyclicBarrier类似,但是可以定义多个阶段
噼里啪啦嘣 发表于2年前
Phaser 工作方式与CyclicBarrier类似,但是可以定义多个阶段
  • 发表于 2年前
  • 阅读 8
  • 收藏 0
  • 点赞 2
  • 评论 0

【腾讯云】新注册用户域名抢购1元起>>>   

import java.util.concurrent.Phaser;

/**
 * Created by zyBourn on 15/12/25.
 */
public class Entity {
    /**
     * 工作方式与CyclicBarrier类似,但是可以定义多个阶段
     * Phaser()/Phaser(int num):使用指定0/num个party创建Phaser
     * register():注册party
     * arriveAndAdvance():到达时等待到所有party到达
     * arriveAndDeregister():到达时注销想成自己
     */
    public static void main(String[] args) {
        Phaser phaser=new Phaser(1);
        new Worker(phaser,"厨师").start();
        new Worker(phaser,"服务员").start();
        new Worker(phaser,"传菜员").start();
        for (int i=1;i<=3;i++){
            phaser.arriveAndAwaitAdvance();
            System.out.println("订单"+i+"完成!");
        }
        phaser.arriveAndDeregister();
        System.out.println("处理完成");
    }

}

class Worker extends Thread{
    private Phaser phaser;
    public Worker(Phaser phaser,String name){
        setName(name);
        this.phaser=phaser;
        phaser.register();
    }
    public void run(){
        for (int i = 0; i <=3; i++) {
            System.out.println("当前的订单是:"+i+":"+getName());
            if (i==3){
                phaser.arriveAndDeregister();
            }else {
                phaser.arriveAndAwaitAdvance();
            }
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}


  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
噼里啪啦嘣
粉丝 1
博文 29
码字总数 8391
×
噼里啪啦嘣
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: