Representación gráfica de hilos threads
16/06/2025

Virtual Threads en Java

Montevideo, 16 de junio de 2025.

En este artículo, Sofis Solutions analiza las ventajas y el impacto de los Virtual Threads introducidos en la JEP 444 de Java. Este nuevo modelo permite crear hilos ligeros y altamente eficientes, gestionados directamente por la Máquina Virtual de Java (JVM), lo que representa un cambio significativo respecto a los hilos tradicionales. 


Cada día, las aplicaciones necesitan procesar cantidades más grandes de datos de manera simultánea y eficiente. Java ha sido consciente de esta necesidad desde sus primeras versiones, implementando el uso de hilos (threads) para ejecutar tareas concurrentemente según la cantidad de procesadores disponibles en la CPU. Sin embargo, los hilos tradicionales son recursos costosos: cada uno consume memoria para su stack y depende del sistema operativo para su planificación, lo que puede llevar a bloqueos y baja escalabilidad. Para mitigar esto, se adoptaron técnicas como los pools de hilos, donde los desarrolladores debían encargarse de su creación, reutilización y sincronización, sumando complejidad a las aplicaciones.

A partir de Java 19 como vista previa, y de forma estable en Java 21, se introduce un nuevo modelo llamado Virtual Threads (JEP 444). Este enfoque propone que la JVM, en lugar del sistema operativo, sea la encargada de gestionar el ciclo de vida de los hilos. Así, se elimina la dependencia directa de los recursos del sistema operativo, permitiendo crear millones de hilos ligeros que no bloquean recursos físicos mientras están en espera.

En palabras simples, un Virtual Thread es un hilo Java gestionado por la JVM, que se desacopla del hilo del sistema operativo en momentos de espera (por ejemplo, una operación de I/O bloqueante). Esto permite que muchos virtual threads puedan compartir un número reducido de hilos de plataforma, logrando una escalabilidad mucho mayor con menor esfuerzo. Además, se mantiene el modelo de programación tradicional con Runnable, lo que permite migrar código existente sin grandes refactorizaciones.

La creación de un hilo virtual (Virtual Thread) es tan simple como se muestra continuación:

Runnable tarea = () -> System.out.println("Ejecutando en: " + Thread.currentThread()); Thread.startVirtualThread(tarea); 

Este fragmento lanza una tarea concurrente usando un Virtual Thread, algo que en versiones anteriores requería más configuración y gestión manual. De manera interna, la JVM se encarga de toda la orquestación, liberando al desarrollador de preocuparse por detalles de bajo nivel.

Los Virtual Threads mejoran notablemente la forma en que programamos tareas concurrentes en Java. El modelo es más liviano, más fácil de usar y promete un rendimiento superior en aplicaciones altamente concurrentes. Aún queda camino por recorrer, especialmente en la adaptación de librerías que internamente gestionan sus propios hilos, pero la dirección es clara: Java avanza hacia un modelo de concurrencia más simple y potente, listo para los desafíos del software moderno.

Últimas noticias
Mano de una persona sosteniendo un mundo con íconos relacionados a sostenibilidad
25/06/2025
Transformación Digital Sostenible: el camino de #GreenSofis

“La tecnología es un medio; el verdadero objetivo es transformar la forma en que creamos valor para las personas y el planeta.” —Leading Digital (West...

Representación gráfica de hilos threads
16/06/2025
Virtual Threads en Java

En este artículo, Sofis Solutions analiza las ventajas y el impacto de los Virtual Threads introducidos en la JEP 444 de Java. Este nuevo modelo permi......

Manos de un hombre sosteniendo unos cubos de madera
04/06/2025
Cómo Sofis integra las tendencias en prevención del soborno y ética organizacional en su gestión

La ética organizacional ya no es solo una declaración de principios; hoy representa un compromiso tangible con la integridad, la transparencia y el cu......