私はプログラムをデバッグしていましたが、同期を2つの異なる方法で配置することでバグを解決しました。奇妙なことに、それ以前はロックを使用していましたが、成功しませんでした。
public void method()
{
lock.lock(); //lock
if(nReaders > 0){
readers.await(); }//await
nReaders++;
...
nReaders--;
readers.signal(); //signal
lock.unlock(); //lock
}
これはこれと同等だと思った
public synchronized void method(){}
残念ながら、そうではないようです...ここで何が欠けていますか?