首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >相位作为CountdownLatch的替代物

相位作为CountdownLatch的替代物
EN

Stack Overflow用户
提问于 2020-01-08 10:05:48
回答 1查看 200关注 0票数 0

使用Phaser代替CountdownLatch在性能、内存、改进、健壮性等方面有什么好处吗?

例如,myCountDownLatch()的行为与myPhaser()相同:

版本1与CountdownLatch:

代码语言:javascript
复制
public static void myCountDownLatch() {

        CountDownLatch countDownLatch = new CountDownLatch(1);
        Thread t = new Thread(() ->
        {
            try {
                log.info("CountDownLatch: in thread..");
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            countDownLatch.countDown();
        });
        t.start();
        try {
            countDownLatch.await();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        log.info("CountDownLatch: out thread..");
    }

带有Phaser的版本2:

代码语言:javascript
复制
public static void myPhaser() {

        Phaser phaser = new Phaser(1);
        Thread t = new Thread(() ->
        {
            try {
                log.info("phaser: in thread..");
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            phaser.arriveAndDeregister();
        });
        t.start();
        // 1. benefit: With phaser we dont need to manage the InterruptedException ourselves.
        phaser.arriveAndAwaitAdvance();
        log.info("phaser: out thread..");

    }

或者,在java中是否有更好的CountdownLatch替代品?

EN

回答 1

Stack Overflow用户

发布于 2020-01-08 10:23:54

来自https://www.infoq.com/news/2008/07/phasers/

在三个不同的SMP平台上实现阶段器的可移植实现所获得的性能结果表明,除了它们的通用性和安全性属性带来的生产力好处之外,它们还可以提供比现有障碍实现更好的性能。

有关更多详细信息,请查看JSR 166

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59643504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档