DEV Community

Java Efetivo (livro)
Java Efetivo (livro)

Posted on • Edited on

Resumo Bônus: Threads Virtuais

As threads virtuais são um recurso introduzido no Java 19 como parte do projeto Loom. Elas são leves e otimizadas, permitindo uma abordagem mais eficiente para programação concorrente.

1. O que são Threads Virtuais?

  • Threads implementadas inteiramente em software.
  • Criadas e gerenciadas pela JVM (Java Virtual Machine), não pelo sistema operacional.
  • Muito mais leves que threads do sistema operacional.

2. Características das Threads Virtuais

  • Leveza: Cada thread virtual ocupa muito menos memória que uma thread tradicional.
  • Altamente escaláveis: Permitem a execução de milhares (ou até milhões) de threads no mesmo processo.
  • Integração com o modelo de threads existente: São compatíveis com o java.lang.Thread.

3. Benefícios
Programação mais simples: Utilizam o modelo tradicional de threads, sem necessidade de complexidade adicional (como pools de threads).
Redução de bloqueios: Operações bloqueantes (como I/O) são tratadas de forma eficiente pela JVM.
Eficiência de recursos: Consomem menos memória e tempo de CPU comparadas às threads tradicionais.

4. Como criar Threads Virtuais?
Utiliza a classe Thread.ofVirtual(), disponível no Java 19+:

var thread = Thread.ofVirtual().start(() -> {
    System.out.println("Thread virtual em execução!");
});

Enter fullscreen mode Exit fullscreen mode

Alternativamente, use um executor:

var executor = Executors.newVirtualThreadPerTaskExecutor();
executor.submit(() -> {
    System.out.println("Executando tarefa em thread virtual.");
});
executor.shutdown();

Enter fullscreen mode Exit fullscreen mode

5. Diferenças entre Threads Virtuais e Tradicionais

Image description

6. Casos de Uso

  • Aplicações de servidor com muitos clientes simultâneos (alta concorrência).
  • Operações I/O intensivas (ex.: servidores HTTP).
  • Substituição de pools de threads tradicionais.

7. Considerações e Limitações

  • Estado experimental: Ainda não recomendado para produção (Java 19 e 20).
  • Compatibilidade: Algumas bibliotecas que usam operações bloqueantes podem não se beneficiar.
  • Diagnóstico: Ferramentas de monitoramento precisam suportar threads virtuais.

Top comments (2)

Collapse
 
wiiliam_903656da78bced7bb profile image
Wiiliam • Edited

That’s a really interesting explanation of virtual threads and their benefits. They’re definitely a big step toward more efficient concurrent programming, especially for high-traffic applications. It’s quite similar to how some online tools make things simpler and more accessible for users.

For example, platforms like bonuskaarta.nl make it easy for people in the Netherlands to enjoy discounts without extra hassle, just like virtual threads simplify handling multiple tasks efficiently. Both approaches focus on making processes smoother, faster, and more user-friendly.

Some comments may only be visible to logged-in visitors. Sign in to view all comments.