Wait

6 respostas
marciolx

esta afirmação é sempre verdadeira?

A call to the wait method causes the calling thread to pause its execution

6 Respostas

T

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.

marciolx

hunh… eu também achava que era false, mas o mock indica a resposta como true…

T

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.

Alexandre

Uma coisa que nao sei, se vc chamar wait() fora do escopo synchronized,
a excessao gerada e em compile time ou em runtime?

P

só para me esclarecer o wait libera o lock e sleep não né?

A

sim

“Alexandre”:
Uma coisa que nao sei, se vc chamar wait() fora do escopo synchronized,
a excessao gerada e em compile time ou em runtime?

runtime

Criado 25 de julho de 2003
Ultima resposta 8 de jun. de 2004
Respostas 6
Participantes 5