Phaser 工作方式与CyclicBarrier类似,但是可以定义多个阶段

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}
点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

springboot学习总结(九)Spring security原理浅谈

认证是由AuthenticationManager来管理的,但是真正进行认证的是AuthenticationManager中定义的AuthenticationProvider。AuthenticationManager中可以定义有多个AuthenticationProvider。当我们使用authenticationprovider元素来

Egret之egret.gui.List的使用教程

工具:EgretWing说明:List         列表组件ItemRender   列表Item组件这里只讲解一下如何绑定数据到List以及对应到ItemRender展示。/  Created by haocao on 15/6/25. /class 

Java CyclicBarrier介绍

CyclicBarrier(周期障碍)类可以帮助同步,它允许一组线程等待整个线程组到达公共屏障点。CyclicBarrier是使用整型变量构造的,其确定组中的线程数。当一个线程到达屏障时(通过调用CyclicBarrier.await()),它会被阻塞,直到所有线程都到达屏障,然后在该点允许所有线程继续执行。与CountDownLatch不同的

CyclicBarrier 循环屏障

import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;/  Created by zyBourn on 15/12/25. /public class 

Java面试笔试

!(https://oscimg.oschina.net/oscnet/3e87555491e165e53a5aef2c357a7d62d9c.png"微信公众号:JavaWeb架构师")微信公众号:JavaWeb架构师描述一个Java文件中可以定义多个类,但是最多只能有一个类被public修饰,并且这个类的类名与文件名必须相