Java线程之Phaser

本文介绍了Java并发工具Phaser,它结合了CyclicBarrier和CountDownLatch的功能。通过示例展示了如何使用Phaser替代CountDownLatch进行线程同步,并详细解释了Phaser的phase和party两个关键状态,以及如何重载onAdvance方法来控制线程的执行和终止。文章还提供了一个完整的实例,演示了Phaser如何协调多个线程按阶段执行任务,直至完整遍历字母表。
摘要由CSDN通过智能技术生成

         Phaser是一个灵活的线程同步工具,他包含了CyclicBarrier和CountDownLatch的相关功能

       首先,来看一下如何用Phaser替代CountDownLatch。对于CountDownLatch而言,有2个重要的方法,一个是await()方法,可以使线程进入等待状态,在Phaser中,与之对应的方法是awaitAdvance(int n)。CountDownLatch中另一个重要的方法是countDown(),使计数器减一,当计数器为0时所有等待的线程开始执行,在Phaser中,与之对应的方法是arrive()。下面的例子创建了3个线程,打印一些字母,但是线程创建好后并不立刻执行,而是在主程序中对其进行控制,3秒钟后所有进程同时开始执行,一下是使用Phaser实现的版本,在注释中解释了如何改造成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值