Java中wait(x==0)的等价物
例如,在Pthreads中,进程可能会等待特定条件,例如:Java中wait(x==0)的等价物,java,concurrency,pthreads,semaphore,Java,Concurrency,Pthreads,Semaphore,例如,在Pthreads中,进程可能会等待特定条件,例如: <await (nr == 0 ^ nw == 0) nw++>; ; 有没有类似的方法在Java中使用信号量来实现这一点?等待nr==0这样的条件,也就是说。如果是一次性事件,您可以使用: 然后按如下方式使用它: 在等待线程中: xIsZeroLatch.await(); 在其他线程中: 如果条件可以在true和false之间更改多次,并且每次更改都需要一个事件,则可以在一个许可证下使用信号灯 public
<await (nr == 0 ^ nw == 0) nw++>;
;
有没有类似的方法在Java中使用信号量来实现这一点?等待nr==0这样的条件,也就是说。如果是一次性事件,您可以使用: 然后按如下方式使用它:
- 在等待线程中:
xIsZeroLatch.await();
- 在其他线程中:
信号灯
public void setX(int a) {
x = a;
if(x==0) {
//do stuff
}
}
然后使用该setter而不是x=a
我部分修复了代码片段的格式,因此它至少是可见的;如果有必要,请进行编辑以使其正确。查看条件界面:我认为一个条件会起作用,但我不是必须不时地从另一个线程手动检查,然后通过该条件发出信号吗?如果涉及多个线程,您可能应该引入某种形式的同步。
x = newX();
if (x == 0) xIsZeroLatch.countDown();
public void setX(int a) {
x = a;
if(x==0) {
//do stuff
}
}