public class Métodos {
boolean liberado;
synchronized void getMessage(String nomeThread) throws InterruptedException {
if(!liberado) {
wait();
}
}
}O método da classe acima é acessada por outras classes herdadas de Thread.
Posso porque não posso tirar o modificador synchronized do método?
quando eu tiro, dá o seguinte erro:
Exception in thread “Thread-1” java.lang.IllegalMonitorStateException
at java.lang.Object.wait(Native Method)
Você utiliza o Synchronized para definir prioridade sobre o que é concorrente nas Threads, e o Wait e Notify para dar um sincronismo no objeto em uma situação de semáforo
Os métodos wait e notify só podem ser usados dentro de contextos sincronizados, eis o porque da java.lang.IllegalMonitorStateException está sendo lançada. O método wait serve para fazer a thread atual entrar em estado de suspensão, ela volta a ativa quando recebe um ‘notify’ ou um ‘notifyAll’.