Um analista de sistemas está projetando a aplicação web Jus...
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Gabarito: C
Fundamento decisivo: O decisivo era que virtual threads são agendadas pelo runtime sobre platform threads subjacentes, sem relação 1:1 permanente.
- Se a alternativa assumir relação 1:1 entre virtual thread e platform thread, desconfie: a base correta é a multiplexação sobre carrier threads.
- Se a alternativa atribuir isolamento de falhas a virtual thread, elimine, porque virtual thread não é sandbox nem mecanismo próprio de contenção.
- Se a alternativa disser que a quantidade de um tipo fixa automaticamente o máximo do outro, independentemente da carga, confronte com o agendamento feito pelo runtime.
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
Os Virtual Threads introduzidos no projeto Project Loom (disponíveis nas versões recentes do Java) foram criados para permitir alta escalabilidade com baixo consumo de recursos.
Como funciona?
- Threads virtuais são gerenciadas pela JVM.
- Elas são multiplexadas sobre um conjunto menor de threads de plataforma (threads do sistema operacional).
- Assim, milhares ou até milhões de threads virtuais podem compartilhar poucos threads reais do SO.
Isso reduz:
- consumo de memória;
- custo de criação de threads;
- overhead de troca de contexto.
Análise das alternativas
- A) Incorreta. Não existe isolamento completo de falhas apenas por serem threads virtuais.
- B) Incorreta. Não há equivalência 1:1 entre thread virtual e thread de plataforma.
- C) Correta.
- D) Incorreta. O número de threads virtuais não fica rigidamente limitado ao número de threads de plataforma.
- E) Incorreta. A relação está invertida.
A alternativa correta é a C.
Aqui está a justificativa para a escolha:
Funcionamento das Threads Virtuais (Correta C): As threads virtuais são projetadas para serem leves e não possuem um mapeamento de um-para-um com as threads do sistema operacional. Em vez disso, elas são mapeadas para threads transportadoras (carrier threads), que são threads de plataforma, apenas quando precisam ser executadas. Isso permite que um único thread de plataforma (thread transportador) suporte a execução de milhares ou até milhões de threads virtuais, especialmente em tarefas que envolvem espera por E/S (I/O), liberando a thread de plataforma para outras tarefas enquanto a thread virtual está bloqueada.
Por que as outras estão incorretas:
- A: Embora uma falha (exceção não capturada) encerre a thread, as threads (virtuais ou de plataforma) em um mesmo processo compartilham o mesmo ambiente de memória e podem se comunicar diretamente, não sendo executadas em "ambientes isolados" que garantam imunidade total ao restante da aplicação.
- B: Esta alternativa descreve o comportamento das threads de plataforma, que têm mapeamento um-para-um com as threads do SO. Threads virtuais são justamente o oposto: não resultam em aumento linear pesado de consumo de recursos.
- D e E: O número de threads de plataforma não limita o número de threads virtuais que podem ser instanciadas; é possível instanciar milhões de threads virtuais mesmo com poucos threads de plataforma disponíveis. A relação de dependência sugerida nessas alternativas inverte ou distorce a hierarquia de escalonamento do Java Runtime (JRE).
Portanto, a implementação de paralelismo no sistema JustiçaÁgil se beneficia da capacidade das threads virtuais de compartilharem threads de plataforma subjacentes para gerenciar um alto volume de requisições de forma eficiente.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo