首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Java实现barrier

用Java实现barrier
EN

Stack Overflow用户
提问于 2010-10-15 00:19:06
回答 2查看 1.8K关注 0票数 3

如何在Java中用信号量实现障碍。下面的伪代码会起作用吗?如何使用java信号量类编写它。

N是在屏障处等待的线程数。EveryoneHasReachedBarrier是一个条件变量。

代码语言:javascript
复制
Aquire(mutex)
m = m + 1;
if(m != N)
{ 
    Release(mutex);
    Aquire(EveryoneHasReachedBarrier);
}
else
{
   m = 0;
   Release(mutex);
   for(i=0; i<N; i++)
   {
       Release(EveryoneHasReachedBarrier);
   }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-15 00:28:32

1)您的伪代码不使用信号量,所以它不是解决方案。

2)它与Java原语互斥/等待/通知的工作方式不一致。

3)它可能无论如何都行不通。由于您在获得条件之前释放互斥对象,因此存在种族条件的潜在性。(还不完全清楚情况是否如此,因为“原语”的语义是可以解释的。)

提示:您需要做的是彻底地读取信号量类的javadocs,然后尝试将它们映射到您要解决的问题上。

票数 0
EN

Stack Overflow用户

发布于 2010-10-15 00:23:55

只需使用CountDownLatchCyclicBarrier即可。

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

https://stackoverflow.com/questions/3938560

复制
相关文章

相似问题

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