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