Javaでユニセックスバスルームの問題を解決しようとしています。要するに、男性と女性の両方が使用できるトイレの数が無限にある1つのバスルームがあります。男性と女性が同時にトイレにいることはできませんが、複数の男性または女性は同時に入ることができます。男性と女性はスレッドで表され、バスルームはモニター(同時実行がどのように機能するかを監視および指示する同期メソッドを備えた共有オブジェクト)で表されます。
さて、私の質問です。通常、次のように記述します。
public synchronized void womanEnter()
{
while(menInTheBathroom>0 || menWaiting>0)
{
wait();
}
//enter bathroom
}
そして、そのプロセスを目覚めさせるには、notify()ですが、私は(私が思うに)男性と女性に別々に通知できる必要があります。男性がトイレに入ると、列に並んでいるすべての男性に通知してほしい。モニターでいくつかのセマフォを使用することはできますが、エクササイズでは許可されていません。待機して通知できるモニターの条件を使用できますか?また、可能であれば、どのように使用できますか?試しましたが、モニターの状態が不正であるというエラーがたくさん発生しました。