美文网首页
Phaser的使用

Phaser的使用

作者: 永远的太阳0123 | 来源:发表于2019-01-19 18:45 被阅读0次
Phaser phaser = new Phaser();
// 1. 注册一个 party
phaser.register();

for (int i = 0; i < 10; i++) {

    phaser.register();

    executorService.submit(() -> {
        // 2. 每个线程到这里进行阻塞,等待所有线程到达栅栏
        phaser.arriveAndAwaitAdvance();

        // doWork()
    });
}
phaser.arriveAndAwaitAdvance();

Phaser 比较灵活,它不需要在构造的时候指定固定数目的 parties,而 CountDownLatch 和 CyclicBarrier 需要在构造函数中明确指定一个数字。
我们可以看到,上面的代码总共执行了 11 次 phaser.register() ,可以把 11 理解为 CountDownLatch 中的 count 和 CyclicBarrier 中的 parties。
这样读者应该很容易理解 phaser.arriveAndAwaitAdvance() 了,这是一个阻塞方法,直到该方法被调用 11 次,所有的线程才能同时通过。

这里和 CyclicBarrier 是一个意思,凑齐了所有的线程,一起通过栅栏。
Phaser 也有周期的概念,一个周期定义为一个 phase,从 0 开始。

Phaser 介绍

相关文章

  • Phaser的使用

    Phaser 比较灵活,它不需要在构造的时候指定固定数目的 parties,而 CountDownLatch 和 ...

  • phaser使用案例

    多线程编程是开发高并发应用的重点和难点,是许多互联网公司面试环节必不可少的部分.打算围绕多线程编程总结一些核心概念...

  • Phaser的使用介绍

    本案例参考至《Java7并发编程实战手册》 在java并发编程的过程中,往往会遇到这样的需求:现在有多个工人,每个...

  • 多线程并发框架使用三

    Phaser Phaser是JDK 1.7引入的。Phaser的功能与CountDownLatch和CyclicB...

  • 简单介绍一下phaser

    Phaser是一个开源HTML5游戏框架。Phaser内部不使用任何人造的OO风格编程。没有大量的继承链和组件系统...

  • Phaser学习(1)

    一、Phaser初始化: 其中属性type有3种,Phaser.CANVAS/Phaser.WEBGL/Phase...

  • 游戏开发笔记2-phaser

    使用TypeScript+Phaser开发游戏 操作方式 安装VSCode npm 安装TypeScript 初始...

  • 使用 Phaser 更加灵活的控制阻塞节点的停留

    01 Phaser Phaser 与 CountDownLatch、CyclicBarrier 做的事情类似,只是...

  • phaser学习总结之phaser入门教程

    前言 最近公司做项目的时候正好使用到phaser,在这里做一下自己整理出来的一些心得,方便大家参考,phaser这...

  • Phaser

    Phaser更像是CountDownLatch和CyclicBarrier的结合体。Phaser是按照不同的阶段来...

网友评论

      本文标题:Phaser的使用

      本文链接:https://www.haomeiwen.com/subject/dcvzdqtx.html