たとえば Pthreads では、プロセスが特定の条件を待機する可能性があります。たとえば、次のようになります。
<await (nr == 0 ^ nw == 0) nw++>;
Javaでセマフォを使用して同様の方法でこれを行う方法はありますか? nr==0 のような条件を待っています。
たとえば Pthreads では、プロセスが特定の条件を待機する可能性があります。たとえば、次のようになります。
<await (nr == 0 ^ nw == 0) nw++>;
Javaでセマフォを使用して同様の方法でこれを行う方法はありますか? nr==0 のような条件を待っています。
1 回限りのイベントの場合は、次を使用できますCountDownLatch
。
private final CountDownLatch xIsZeroLatch = new CountDownLatch(1);
次に、次のように使用します。
待機中のスレッドで:
xIsZeroLatch.await();
他のスレッドで:
x = newX();
if (x == 0) xIsZeroLatch.countDown();
条件が true と false の間で数回変化する可能性があり、それぞれの変化にイベントが必要な場合は、Semaphore
1 つの許可で を使用できます。
public void setX(int a) {
x = a;
if(x==0) {
//do stuff
}
}
次に、代わりにそのセッターを使用しx = a
ます。