Olás,
bem estou tendo um problemas para implementar o problema dos leitores e escritores em Java,
e minha dúvida é a seguinte:
Esta é a raiz do problema o método filaDeEspera ele está dando erro no wait:
Exception in thread “Thread-1” java.lang.IllegalMonitorStateException
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at BaseDeDados.filaDeEspera(BaseDeDados.java:110)
at Escritor.run(Escritor.java:52)
E eu não estou entendendo porque.
Basicamente eu mando ele esperar nada de mais.
public class BaseDeDados{
private Semaphore controleDeLeitores;
public int numeroDeLeitores;
private Semaphore baseDeDados;
private int entidadeEsperando;
private Semaphore controleDeEntidadeEsperando;
public void filaDeEspera(String str){
this.adquireCDEE();
/*
if(this.getEntidadeEsperando() == SIM){
System.out.println(str);
while(this.getEntidadeEsperando() == SIM){
try {
this.liberaCDEE();
Leitor.sleep(200);
this.adquireCDEE();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}*/
if(this.getEntidadeEsperando() == SIM)
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
this.liberaCDEE();
}
}
A parte comentada funciona porém se algum leitor ou escritor chegar enquanto os que já
estavam na ficam dormindo já era a prioridade.
Desde já grato.