esta afirmação é sempre verdadeira?
A call to the wait method causes the calling thread to pause its execution
esta afirmação é sempre verdadeira?
A call to the wait method causes the calling thread to pause its execution
Esse eh o tipo de questao que acho muito sacana. Acho que a afirmativa eh falsa, porque se o objeto onde esta chamando a chamada wait nao estiver em bloco synchronized, eh gerado uma excessao de runtime: IllegalMonitorStateException, dizendo que nao tem o lock do objeto em questao.
hunh… eu também achava que era false, mas o mock indica a resposta como true…
Com certeza, a funcao do metodo wait eh justamente essa . Suspender a thread ate que ela receba um notify.
Mas se tu leres a documentacao da classe Object vai ver que ela pode gerar a excessao. Queria saber qual criterio seguir nesse tipo de questao, onde precisam existir pre-requisitos para que a parada funcione.
A afirmacao dizia que chamando wait a thread parava. Se a afirmacao fosse, possuindo o lock de um objeto uma chamada para seu metodo wait bloquaria a thread, eu concordaria sem pestanejar.
Ou ainda, desconsiderando casos onde ocorram runtimes exceptions, a chamada ao wait bloquearia a thread, tb concordaria.
Mas realmente, soh escrito , chamada ao wait bloqueia a thread, deixa margem a duvidas, muitas duvidas.
Se alguem conhecer os criterios das questoes nesses casos e pudesse explicar ficaria muito grato.
Por sorte na minha prova nao caiu nada desse tipo.
Uma coisa que nao sei, se vc chamar wait() fora do escopo synchronized,
a excessao gerada e em compile time ou em runtime?
só para me esclarecer o wait libera o lock e sleep não né?
sim
Uma coisa que nao sei, se vc chamar wait() fora do escopo synchronized,
a excessao gerada e em compile time ou em runtime?