No contexto da linguagem de Programação Java, uma thread ex...
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é E: a thread executável é colocada para dormir.
No contexto da linguagem de programação Java, a manipulação de threads é um tópico importante, especialmente em situações que envolvem concorrência e sincronização. Uma thread em Java pode entrar em um estado de espera ou "dormir" quando uma das suas operações explícitas de pausa é chamada, como Thread.sleep()
ou quando ela aguarda em um bloco sincronizado.
Justificativas para a alternativa correta:
E - Quando uma thread é colocada para dormir usando métodos como Thread.sleep()
, ela entra em um estado de espera temporária. Isso é diferente de uma espera por bloqueio de sincronização, mas ainda assim é um estado de inatividade temporária que é controlado pelo programador ou pelas condições do código.
Explicações para as alternativas incorretas:
A - Uma thread que sai do estado "novo" transita para o estado "executável", mas não necessariamente entra em espera sincronizada. Esse movimento apenas a torna elegível para execução.
B - Operações de E/S (Entrada/Saída) podem bloquear uma thread, mas não estão necessariamente ligadas ao conceito de espera sincronizada em Java, que envolve o uso de blocos ou métodos sincronizados para controle de acesso a recursos compartilhados.
C - Quando uma thread encerra sua tarefa devido a um erro, ela não entra em espera sincronizada. Ao invés disso, ela normalmente termina sua execução ou lança uma exceção que pode ser tratada em outro ponto do programa.
D - Inserir uma instrução synchronized
não coloca uma thread diretamente em espera. O synchronized
é utilizado para controlar o acesso concorrente a blocos de código ou métodos, prevenindo condições de corrida, mas a entrada em espera sincronizada ocorre somente se a thread não puder obter o bloqueio necessário.
Compreender o comportamento das threads e os mecanismos de sincronização em Java é essencial para gerir corretamente a execução concorrente e evitar problemas comuns em sistemas multithread, como deadlocks e condições de corrida.
"Gostou do comentário? Deixe sua avaliação aqui embaixo!"
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Estados de 'thread: Classe Thread
•Estado novo:
•Uma nova thread inicia seu ciclo de vida no estado novo.
•Permanece nesse estado até o programa iniciar a thread,
colocando-a no estado executável
•Estado executável:
•Uma thread que entra nesse estado está executando sua tarefa.
•Estado em espera:
•Uma thread entra nesse estado a fim de esperar que uma outra
thread realize uma tarefa.
•Estado de espera cronometrada:
•Uma thread entra nesse estado para esperar uma outra thread ou
para transcorrer um determinado período de tempo.
•Uma thread nesse estado retorna ao estado executável quando ela
é sinalizada por uma outra thread ou quando o intervalo de tempo
especificado expirar.
Ex:thread para salvar arquivo
automaticamente
•Estado terminado:
•Uma thread executável entra nesse estado quando completa sua
tarefa.
Estados da Thread:
a) Novo
b)Executavel
c)Espera: Aguardando outro thread
d)Espera Cronometrada (sleep)
e)Bloqueado
f)morto ou recursos liberados.
Assertiva correta E
A = Executável
B = Executável
C = Bloqueado
D = Bloqueado
GABARITO E
E ) Outra maneira de posicionar uma thread no estado em espera sincronizada é colocar uma thread executável para dormir — uma thread adormecida permanece no estado de espera sincronizada por um determinado período de tempo (chamado intervalo de adormecimento), depois do qual ela retorna ao estado executável. (DEITEL) Java 10° Edição
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo