Con Java 21 entra un nuevo concepto: hilos virtuales java (Java Virtual Threads).
La cual es una nueva característica que nos permite crear miles o millones de hilos (tareas en paralelo). Los cuales se diferencian de los hilos comunes (Platform Threads) al no depender del sistema operativo, puesto que son virtuales. De estos se encargará la JVM.
Al usar hilos virtuales ahorramos recursos del procesador y de memoria del sistema, sin importar si estamos creando y/o usando miles o millones.
Los hilos virtuales son ideales para aplicaciones modernas donde se requiere esperar y recibir respuestas o acceder a bases de datos remotas, entre otras cosas. Además no impide usar los hilos comunes que dependen del sistema operativo.
Observemos un ejemplo de uso de hilos virtuales.
VirtualThreadsDemo.java
package com.comunidad.demo; public class VirtualThreadsDemo { public static void main(String[] args) throws InterruptedException { // Crear un Virtual Thread Thread.startVirtualThread(() -> { System.out.println("Hola desde un Virtual Thread!"); }); // Crear varios Virtual Threads en un loop for (int i = 0; i < 5; i++) { Thread.startVirtualThread(() -> { System.out.println("Ejecutando tarea en hilo virtual: " + Thread.currentThread()); }); } // Pausa para que los hilos terminen Thread.sleep(1000); } }
Al usar Java Virtual Threads se crea un hilo virtual en lugar de uno del sistema operativo. Se pueden lanzar miles de estos hilos sin problemas de rendimiento y el código se mantiene simple y parecido al modelo clásico de hilos.
Ahora veamos un ejemplo con hilos clásicos que dependen del sistema operativo:
PlatformThreadsDemo.java
package com.comunidad.demo; public class PlatformThreadsDemo { public static void main(String[] args) throws InterruptedException { // Crear un hilo clásico Thread hilo = new Thread(() -> { System.out.println("Hola desde un hilo normal!"); }); hilo.start(); // Crear varios hilos en un loop for (int i = 0; i < 5; i++) { Thread t = new Thread(() -> { System.out.println("Ejecutando tarea en hilo normal: " + Thread.currentThread()); }); t.start(); } // Pausa para que los hilos terminen Thread.sleep(1000); } }
La diferencia clave es que aquí los hilos son gestionados directamente por el sistema operativo, lo que implica mayor consumo de recursos y limitaciones en la cantidad que se pueden crear simultáneamente.
Esta nueva característica de Java no impide usar hilos dependientes del sistema, se pueden usar simultáneamente.
Si necesitas realizar cálculos intensivos sin necesidad de una respuesta rápida puedes optar por hilos dependientes del sistema operativo.
Si necesitas operaciones I/O simultáneas, los hilos virtuales Java son tu opción. Además de que se recomiendan para aplicaciones hechas con Spring Boot o frameworks similares (Quarkus, Helidon y Micronaut).
Enlaces:
https://www.arquitecturajava.com/java-virtual-threads-que-son-y-por-que-son-importantes/https://www.paradigmadigital.com/dev/ventajas-virtual-threads-java-21/
https://www.campusmvp.es/recursos/post/hilos-virtuales-en-java-la-revolucion-del-rendimiento-en-la-plataforma-java.aspx?srsltid=AfmBOorK0ohCewbpSKEaSfcEHE7o2cjDPmosxo-n2lE2edqBYUv20EVY

Comentarios
Publicar un comentario