Java中如何深入理解并应用Phaser多线程同步机制?
- 内容介绍
- 文章标签
- 相关推荐
本文共计749个文字,预计阅读时间需要3分钟。
在本文中,我们介绍了CyclicBarrier和CountDownLatch的使用。这里重点回顾CountDownLatch,它主要用于一个线程等待多个线程执行完毕的情况。而CyclicBarrier则用于多个线程相互等待,直到所有线程都完成某个操作后再继续执行。
前面的文章中我们讲到了CyclicBarrier、CountDownLatch的使用,这里再回顾一下CountDownLatch主要用在一个线程等待多个线程执行完毕的情况,而CyclicBarrier用在多个线程互相等待执行完毕的情况。
Phaser是java 7 引入的新的并发API。他引入了新的Phaser的概念,我们可以将其看成一个一个的阶段,每个阶段都有需要执行的线程任务,任务执行完毕就进入下一个阶段。所以Phaser特别适合使用在重复执行或者重用的情况。
基本使用
在CyclicBarrier、CountDownLatch中,我们使用计数器来控制程序的顺序执行,同样的在Phaser中也是通过计数器来控制。在Phaser中计数器叫做parties, 我们可以通过Phaser的构造函数或者register()方法来注册。
通过调用register()方法,我们可以动态的控制phaser的个数。如果我们需要取消注册,则可以调用arriveAndDeregister()方法。
本文共计749个文字,预计阅读时间需要3分钟。
在本文中,我们介绍了CyclicBarrier和CountDownLatch的使用。这里重点回顾CountDownLatch,它主要用于一个线程等待多个线程执行完毕的情况。而CyclicBarrier则用于多个线程相互等待,直到所有线程都完成某个操作后再继续执行。
前面的文章中我们讲到了CyclicBarrier、CountDownLatch的使用,这里再回顾一下CountDownLatch主要用在一个线程等待多个线程执行完毕的情况,而CyclicBarrier用在多个线程互相等待执行完毕的情况。
Phaser是java 7 引入的新的并发API。他引入了新的Phaser的概念,我们可以将其看成一个一个的阶段,每个阶段都有需要执行的线程任务,任务执行完毕就进入下一个阶段。所以Phaser特别适合使用在重复执行或者重用的情况。
基本使用
在CyclicBarrier、CountDownLatch中,我们使用计数器来控制程序的顺序执行,同样的在Phaser中也是通过计数器来控制。在Phaser中计数器叫做parties, 我们可以通过Phaser的构造函数或者register()方法来注册。
通过调用register()方法,我们可以动态的控制phaser的个数。如果我们需要取消注册,则可以调用arriveAndDeregister()方法。

