在例如Pthreads中,有可能让某个进程等待某个条件,例如:
<await (nr == 0 ^ nw == 0) nw++>;
有没有办法在Java中使用Semaphores以类似的方式执行此操作?正在等待nr == 0这样的条件。
答案 0 :(得分:4)
如果是一次性事件,您可以使用a CountDownLatch
:
private final CountDownLatch xIsZeroLatch = new CountDownLatch(1);
然后按如下方式使用它:
:
xIsZeroLatch.await();
在其他帖子中:
x = newX();
if (x == 0) xIsZeroLatch.countDown();
如果条件可以在true和false之间多次更改,并且每次更改都需要一个事件,则可以使用Semaphore
一个许可。
答案 1 :(得分:0)
public void setX(int a) {
x = a;
if(x==0) {
//do stuff
}
}
然后使用该setter而不是x = a
。