← Questões de Programação

Programação · FEPESE · 2022

Questão comentada de Programação

Uma thread em Java em qualquer ponto do tempo existe em um determinado estado. Assinale a alternativa que contém o estado no qual a thread pode atualmente estar em execução ou pode estar pronta para execução em qualquer instante do tempo

Gabarito: C

Em Java, a thread pode passar por alguns estados bem conhecidos: NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING e TERMINATED. A questão quer o estado em que a thread pode estar executando ou pronta para executar a qualquer momento. Esse é o estado RUNNABLE, que é uma espécie de "fila de largada": a thread pode estar realmente rodando na CPU ou apenas aguardando a vez para rodar. Aqui mora a pegadinha: muita gente pensa que "running" é o nome do estado oficial, mas na API de Java o estado padrao usado na enumeração Thread.State é RUNNABLE. Ou seja, o Java não separa, na enumeração, "pronta para executar" e "executando de fato" como estados distintos nessa classificação. Já BLOCKED é quando a thread está travada esperando um monitor de bloqueio, e TERMINATED é quando ela já terminou de vez. Idle não é um estado oficial da thread em Java. Então, quando a banca descreve "em execução ou pronta para execução", ela está descrevendo exatamente o conceito de RUNNABLE. Esse entendimento bate com a documentação oficial da classe Thread.State da Java API, que define RUNNABLE como a thread executando na máquina virtual Java ou pronta para executar em um processador. Em prova, essa formulação costuma aparecer quase literal.

Continue treinando

Questões relacionadas