Representação gráfica de threads
16/06/2025

Virtual Threads en Java

Montevidéu, 16 de junho de 2025.

Neste artigo, a Sofis Solutions analisa as vantagens e o impacto dos Virtual Threads introduzidos na JEP 444 do Java. Esse novo modelo permite criar threads leves e altamente eficientes, gerenciados diretamente pela Máquina Virtual Java (JVM), representando uma mudança significativa em relação às threads tradicionais. 


A cada dia, as aplicações precisam processar volumes cada vez maiores de dados de forma simultânea e eficiente. O Java tem consciência dessa necessidade desde suas primeiras versões, implementando o uso de threads para executar tarefas concorrentemente conforme a quantidade de processadores disponíveis na CPU. No entanto, as threads tradicionais são recursos custosos: cada uma consome memória para sua pilha (stack) e depende do sistema operacional para o agendamento, o que pode levar a bloqueios e baixa escalabilidade. Para mitigar isso, adotaram-se técnicas como os pools de threads, nos quais os desenvolvedores precisavam gerenciar manualmente sua criação, reutilização e sincronização, o que aumentava a complexidade das aplicações.

A partir do Java 19 como prévia, e de forma estável no Java 21, foi introduzido um novo modelo chamado Virtual Threads (JEP 444). Essa abordagem propõe que a JVM, e não o sistema operacional, seja responsável por gerenciar o ciclo de vida das threads. Com isso, elimina-se a dependência direta dos recursos do sistema, permitindo criar milhões de threads leves que não bloqueiam recursos físicos enquanto estão em espera.

Em termos simples, uma Virtual Thread é uma thread Java gerenciada pela JVM, que se desacopla da thread do sistema operacional durante momentos de espera (por exemplo, uma operação de I/O bloqueante). Isso permite que muitas Virtual Threads compartilhem um número reduzido de threads de plataforma, alcançando muito mais escalabilidade com menor esforço. Além disso, mantém-se o modelo tradicional de programação com Runnable, o que possibilita a migração de código existente sem grandes refatorações.

A criação de uma thread virtual é tão simples quanto o exemplo a seguir:

Runnable tarefa = () -> System.out.println("Executando em: " + Thread.currentThread()); Thread.startVirtualThread(tarefa);

Este trecho lança uma tarefa concorrente utilizando uma Virtual Thread — algo que, em versões anteriores, exigia mais configuração e gerenciamento manual. Internamente, a JVM cuida de toda a orquestração, liberando o desenvolvedor de se preocupar com detalhes de baixo nível.

As Virtual Threads melhoram significativamente a forma como programamos tarefas concorrentes em Java. O modelo é mais leve, mais fácil de usar e promete um desempenho superior em aplicações altamente concorrentes. Ainda há caminho a percorrer, especialmente na adaptação de bibliotecas que gerenciam suas próprias threads internamente, mas a direção é clara: o Java avança para um modelo de concorrência mais simples e poderoso, pronto para os desafios do software moderno.

Últimas notícias
Pessoas trabalhando em equipes usando IA
23/12/2025
Regulamentação do uso de IA na engenharia de software com CMMI

Nesta entrevista, conversamos com o Grupo de Engenharia de Software da Sofis Solutions, uma equipe que tem trabalhado ativamente na evolução de suas p......

Painel de pessoas conversando em um evento.
24/11/2025
Burocracia Criativa Uruguai 2025: Inovação pública através da arte, tecnologia e inteligência artificial

No dia 20 de novembro, aconteceu a edição piloto do Creative Bureaucracy UY 2025 na Sala Verdi, evento que antecede o Creative Bureaucracy Festival, u......

panel con preguntas e intercambio entre el público y los especialistas invitados
22/10/2025
FOCAL 2025: Inteligência Artificial e Transparência na Gestão Pública

Entre 14 e 16 de outubro de 2025, realizou-se em Santiago, Chile, o XI Fórum de Escritórios de Contabilidade Governamental da América Latina (FOCAL), ......