gpt4 book ai didi

Java: jsr166y Phaser 教程/讲解

转载 作者:行者123 更新时间:2023-11-29 09:02:26 28 4
gpt4 key购买 nike

This question两年前被问到,但它提到的资源要么不是很有帮助(恕我直言),要么链接不再有效。

必须有一些很好的教程才能理解 Phaser .我已经阅读了 javadoc,但我的眼睛呆滞了,因为为了真正理解 javadoc,您必须知道这些类应该如何使用。

有人有什么建议吗?

最佳答案

对于 Phaser,我已经回答了几个问题。看到它们可能有助于理解它们的应用。它们在底部链接。但是要了解 Phaser 的作用及其有用的原因,了解它解决的问题很重要。

这是 CountdownLatch 和 CyclicBarrier 的属性

注意:

  • 参与人数是不同线程数量的另一种说法
  • 不可重用意味着您必须创建一个新的实例重用前的屏障
  • 如果线程可以到达并继续工作,则屏障是可推进的无需等待其他线程或可以等待所有线程完成

CountdownLatch

  • 固定人数
  • 不可重用
  • Advanceable(查看latch.countDown(); advanceablelatch.await(); 必须等待 )

CyclicBarrier

  • 固定人数
  • 可重复使用
  • 不可提前

所以CountdownLatch是不可重用的,每次都必须创建一个新的实例,但是是可以使用的。 CylicBarrier 可以重新使用,但所有线程都必须等待每一方到达屏障。

移相器

  • 动态参与人数
  • 可重复使用
  • 进阶

当线程想要被 Phaser 识别时,他们调用 phaser.register() 当线程到达屏障时,他们调用 phaser.arrive() 这就是它的先进之处。如果线程想要等待所有已注册的任务完成 phaser.arriveAndAwaitAdvance()

还有一个阶段的概念,其中线程可以等待其他可能尚未完成的操作完成。一旦所有线程都到达相位器的屏障,就会创建一个新相位(增量为 1)。

你可以看看我的其他回答,也许会有帮助:

Java ExecutorService: awaitTermination of all recursively created tasks

Flexible CountDownLatch?

关于Java: jsr166y Phaser 教程/讲解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16571482/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com