编程语言
首页 > 编程语言> > 与Java中的await(x == 0)等效

与Java中的await(x == 0)等效

作者:互联网

例如,在Pthreads中,有可能让进程等待某个条件,例如:

<await (nr == 0 ^ nw == 0) nw++>;

有没有办法使用Java中的信号量以类似的方式来做到这一点?等待像nr == 0这样的条件.

解决方法:

如果是一次性事件,则可以使用a CountDownLatch

private final CountDownLatch xIsZeroLatch = new CountDownLatch(1);

然后,按如下方式使用它:

>在您的等待线程中:

xIsZeroLatch.await();

>在其他线程中:

x = newX();
if (x == 0) xIsZeroLatch.countDown();

如果条件可以在真与假之间多次更改,并且每次更改都需要一个事件,则可以使用具有一个许可的信号量.

标签:concurrency,pthreads,semaphore,java
来源: https://codeday.me/bug/20191031/1974313.html