Propagação de Contexto de Solicitação em Subthreads com Spring MVC
No desenvolvimento com Spring MVC, acessar atributos da solicitação HTTP em subthreads requer atenção especial, pois o RequestContextHolder armazena dados no ThreadLocal do thread atual. Subthreads não herdam automaticamente esses valores, resultendo em null ao tentar obtê-los.
Exemplo que demonstra o problema:
@GetMapping("/endpoint-assin ...
Publicado em 7-17 07:13
Resolvendo Exceção de Parse de Data em Requisições Feign entre Microserviços Spring Cloud
Cenário
Ambiente baseado em Spring Cloud e Spring Cloud OpenFeign, onde um microsserviço consome outro via cliente Feign. Em cargas concorrentes, parte das requisições falha durante a desserialização de campos do tipo Date, gerando uma JsonMappingException encadeada a NumberFormatException.
Sintoma
O erro não ocorre em todas as chamadas; sua fr ...
Publicado em 7-8 21:36
Gestão de Contexto com ThreadLocal: Implementando um Componente Reutilizável em Java
Em aplicações corporativas, frequentemente surge a necessidade de compartilhar informações contextuais entre diferentes camadas e métodos durante o processamento de uma requisição. Um exemplo clássico é a identificação do usuário autenticado, que precisa estar disponível em diversos pontos do fluxo de execução. Quando poucos dados precisam ser ...
Publicado em 7-7 16:05
Java Multithreading e Concorrência em Aplicações Backend
Ciclo de Vida de Threads
Threads possuem cinco estados: criação, pronto, execução, bloqueado e encerrado. Na criação, o objeto thread é instanciado. No estado pronto, após start(), aguarda alocação de CPU. Execução ocorre quando a thread obtém recursos CPU. Bloqueio acontece quando libera CPU voluntariamente (wait, sleep, I/O), e encerramento a ...
Publicado em 6-29 03:22
ThreadLocal em Java: Compreendendo Variáveis Locais de Thread para Isolamento Concorrente
Introdução
O ThreadLocal em Java é uma estrutura que permite armazenar valores de forma isolada para cada thread. Diferente de um thread em si, ele age como uma variável local de thread (thread-local variable), fornecendo uma cópia exclusiva do valor para cada thread que o utiliza. Isso evita conflitos de concorrência, pois cada thread modifica ...
Publicado em 6-21 19:19
Tratamento de Concorrência e Segurança de Threads com SimpleDateFormat em Java
O uso da classe SimpleDateFormat em ambientes multithread é um erro comum no desenvolvimento Java. Embora seja uma ferramenta prática para formatação e conversão de datas, ela não é thread-safe. O problema central reside no fato de que a classe herda de DateFormat e mantém um objeto Calendar interno que é compartilhado e modificado durante as o ...
Publicado em 6-7 20:12