blz que o método wait() pode resultar em IllegalMonitoStateException, caso o objeto chame o wait em uma thread que não possui o bloquei dele e por isso devemos colocá-lo sempre em um bloco synchronized. Porém, nesse caso, no momento que o wait() é chamando .. acredito que ele vá ter o bloqueio do objeto. Quem mais poderia estar com o bloqueio do t2 nesse código?
obs.: esse código está resultando em um IllegalMonitoStateException..! :)
opa. acho que agora ficou claro. tinha feito confusão com os conceitos do wait e do bloco synchronized com os bloqueios!
obrigado!
ViniGodoy
Então, não há bloqueio do objeto. A exception é disparada, igual a teoria dizia que ia acontecer.
Não entendi, qual é a sua dúvida?
ViniGodoy
Ops. Eu postei e vi que vc tinha respondido. hehhehehe
soaresinfo
Como você chamou o wait da classe Tester, a thread main está com o lock da tester, e quando chamou o wait, você estava fazendo isso usando a thread t2, resultando na exception.
T
thiago_vf
soaresinfo, eu chamei o wait da classe Tester? pra mim, eu estou tentando chamar só o wait do t2 e, como não estou em um contexto synchronized, não obtenho o bloqueio dele resultado na exceção!
ViniGodoy
soaresinfo, eu chamei o wait da classe Tester? pra mim, eu estou tentando chamar só o wait do t2 e, como não estou em um contexto synchronized, não obtenho o bloqueio dele resultado na exceção!
É isso mesmo thiago.
Aliás, soares, a thread main também não possui lock nenhum. Não há um bloco sincronizado sequer nesse código.