Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — FGV 2025

ProgramaçãoLinguagens de programação
Código
fg107884
Banca
FGV
Órgão
CPRM
Ano
2025
Nível
Superior
Cargo
Analista em Geociências - Geoprocessamento
Sobre o modelo de execução de servlets em um servidor de aplicação Java EE, considere as afirmativas:I. Cada requisição HTTP pode ser atendida por uma nova thread gerenciada pelo container, enquanto a instância do servlet é única por padrão.II. Os servlets são thread-safe por padrão, não sendo necessário gerenciar concorrência manualmente.III. Recursos compartilhados entre requisições, como variáveis de instância, podem gerar condições de corrida se não forem tratados corretamente.Está correto o que se afirma em
  1. AI e III, apenas.
  2. BII, apenas.
  3. CI, apenas.
  4. DII e III, apenas.
  5. EI, II e III.
Revelar gabarito e comentário

GabaritoA — I e III, apenas.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Servlets e concorrência no Java EE

Gabarito: letra A. Apenas as afirmativas I e III estão corretas. No modelo padrão de servlets, o container cria uma única instância do servlet e atende cada requisição HTTP em uma nova thread, o que exige cuidado com variáveis de instância compartilhadas — elas podem gerar condições de corrida se não houver sincronização. A afirmativa II erra ao afirmar que servlets são thread-safe por padrão: eles não são, e o desenvolvedor deve gerenciar a concorrência manualmente quando necessário.

Afirmativa

Conteúdo

Correção

Justificativa

I

Cada requisição HTTP pode ser atendida por uma nova thread gerenciada pelo container, enquanto a instância do servlet é única por padrão.

✅ Correta

O container mantém uma única instância do servlet e atende cada requisição em uma thread separada do pool.

II

Os servlets são thread-safe por padrão, não sendo necessário gerenciar concorrência manualmente.

❌ Incorreta

Servlets não são thread-safe por padrão; o desenvolvedor deve gerenciar concorrência (ex.: synchronized, ThreadLocal).

III

Recursos compartilhados entre requisições, como variáveis de instância, podem gerar condições de corrida se não forem tratados corretamente.

✅ Correta

O modelo single-instance/multi-thread expõe variáveis de instância a race conditions sem proteção adequada.

Servlet: concorrência
  • 1Modelo padrão
    • Única instância
    • Múltiplas threads (pool)
  • 2Thread safety
    • Não é automático
    • Variáveis de instância = risco
    • Sincronização manual
      • synchronized
      • ThreadLocal
      • Objetos imutáveis
LEVEL · soulevel.com.br

Afirmativa I — ✅ Correta

O container de servlets (ex.: Tomcat, Jetty) tipicamente mantém uma única instância do servlet para toda a aplicação. Cada requisição é delegada a uma thread separada do pool, ambas gerenciadas pelo container. Esse é o comportamento default e mais eficiente. A afirmativa está correta.

Afirmativa II — ❌ Incorreta

Servlets não são thread-safe por padrão. Como a mesma instância atende múltiplas threads concorrentemente, variáveis de instância (e outros recursos compartilhados) podem ser acessados simultaneamente, gerando race conditions. Cabe ao programador usar synchronized, objetos imutáveis ou ThreadLocal para garantir a segurança. Dizer que não é necessário gerenciar concorrência é incorreto.

Afirmativa III — ✅ Correta

Exatamente por causa do modelo single-instance/multi-thread, variáveis de instância são compartilhadas entre requisições. Se não forem protegidas (por exemplo, com sincronização), podem sofrer condições de corrida. A afirmativa está correta.

NÃO CAIA NESSA!

O item II tenta convencer o candidato de que o container já cuida da segurança de threads. Mas o container apenas gerencia as threads; a proteção de dados compartilhados é responsabilidade do desenvolvedor. Não caia nessa: servlet não é thread-safe por padrão.

Gabarito: letra A (I e III, apenas).

Link permanente: /questoes/fg107884