Threads... 3ª parte

3 respostas
D

Salve, Salve Galera!

Acho que já perceberam que estou estudando Threads né!? :)…

Pergunta: O método run de uma Thread inclui as seguintes linhas:

1. try {
2.      sleep(100)
3. } catch(InterruptedException e) {}

Supondo que a Thread não seja interrompida, qual das seguintes declarações está certa?

A. O código não compilará, pois exceções não podem ser capturdas no método run()

B. Na linha 2, a thread parará de executar. A execução voltará, no máximo em 110 milisegundos.

C. Na linha 2, a thread pararpa de executar. Ela voltará a executar em exatamente 100 milisegundos.

D. Na linha 2, a thread parará de executar. Ela voltará a ser executada algum tempo depois de 100 milisegundos terem se passado.

Quem se arrisca a responder?! :lol:

Imagino que seja a D por 2 motivos simples…

1º Quando executa o Sleep a Thread é colocada para dormir pelo escalonador…

2º Ela lança InterruptedException, isso porque a Thread pode estar dormindo e neste exato momento ela sofre um interrupt()… quando a Thread voltar do estado dormindo ela irá lançar a Exception…

Correto?

Atn.
Dennys Fredericci
http://www.dennys.eti.br

3 Respostas

D

Tb to estudando Threads :lol: .
Acho q é a D tb pq ele fica em sleep 100 milisegundos ae volta pro estado executavel, a partir dai nao é determinado quando volta pra execuçao de novo. Mas uma coisa, sleep é estatico, ele pode ser chamado assim na boa? 8O

D

“Duende_Macabro”:
Tb to estudando Threads :lol: .
Acho q é a D tb pq ele fica em sleep 100 milisegundos ae volta pro estado executavel, a partir dai nao é determinado quando volta pra execuçao de novo. Mas uma coisa, sleep é estatico, ele pode ser chamado assim na boa? 8O

Pode ser chamada assim numa boa! Isso pq um metodo de classe chama pode acessar metodos/menbros estatico… mas métodos estaticos não podem chamar metodos de classe ou atributos…

Atn.
Dennys Fredericci
http://www.dennys.eti.br

R

Dennys,

A opção D está correta.

Porém se a thread que estiver dormindo for interrompida ela voltará a executar imediatamente, tratará a InterruptedException e continuará executando até concluir o método run(). :wink:

Criado 13 de fevereiro de 2005
Ultima resposta 14 de fev. de 2005
Respostas 3
Participantes 3