zoukankan      html  css  js  c++  java
  • Phaser也可以实现countdownLatch的功能

    /**
     * 可用用phaser模拟countDownLatch
     * awaitAdvance方法:如果传入的参数和当前的phase相等,线程就阻塞住等待phase的值增加;否则就立即返回
     */
    public class PhaserTest2 {
    
        private static Random random = new Random(System.currentTimeMillis());
    
        public static void main(String[] args) throws InterruptedException {
            Phaser phaser = new Phaser(4);
            for (int i = 1; i <= 4; i++) {
                new AwaitAdvanceTask(i, phaser).start();
            }
            System.out.println("before: "+phaser.getPhase());
            int result = phaser.awaitAdvance(phaser.getPhase());
            System.out.println("after: "+phaser.getPhase());
            System.out.println("i = "+result);
        }
    
    
        static class AwaitAdvanceTask extends Thread {
    
    
            private int no;
            private Phaser phaser;
    
            AwaitAdvanceTask(int no, Phaser phaser) {
                this.no = no;
                this.phaser = phaser;
            }
    
            @Override
            public void run() {
                try {
                    Thread.sleep(random.nextInt(5000));
                    System.out.println(no + " has worked done");
                    phaser.arriveAndAwaitAdvance();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
  • 相关阅读:
    Mdate时间插件
    JS数组映射保存数据-场景
    基于微信的图片放大预览
    移动前端自适应布局适配解决方案
    JS数组映射详解
    回复与发表切换
    this应用详解-js原生
    淘宝虚拟产品自动发货软件
    搭建个人博客
    2019免杀大马
  • 原文地址:https://www.cnblogs.com/moris5013/p/11893309.html
Copyright © 2011-2022 走看看