与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();

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

上一篇:linux-检查fork()是否安全


下一篇:【linux】在阿里云服务器上部署网站 WeCenter