gpt4 book ai didi

java - 安全使用 CyclicBarrier.reset

转载 作者:太空宇宙 更新时间:2023-11-04 10:29:45 24 4
gpt4 key购买 nike

CyclicBarrier.reset javadocs,以下提到。

Note that resets after a breakage has occurred for other reasons can be complicated to carry out; threads need to re-synchronize in some other way, and choose one to perform the reset

考虑到上面的提示,如果我使用 isBroken() 方法确保屏障没有被破坏,那么调用 reset() 方法是否安全?

最佳答案

文档并没有说调用 reset()不安全,即使在屏障被打破之后也是如此。

它只是说它很复杂,因为你需要确保只有一个线程重置它。如果多个线程重置它,那么线程有可能再次等待屏障,而第二个或第三个线程重置它,再次打破它(尽管在打破屏障后,它会再次重置它,因此之后它不会处于 isBroken() 状态)。如果只有一个线程调用reset,而其他线程没有等待,那么其他线程可能会在barrier重置之前再次开始等待,并立即得到BrokenBarrierException。

在屏障未破坏时调用它,将破坏任何等待线程的屏障,然后重置屏障。

随时调用 reset 是安全的,因为它不会在 CyclicBarrier 内造成内存不一致或数据争用。

关于java - 安全使用 CyclicBarrier.reset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50146176/

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