与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