Virtual Threads


Uno de los tópicos recurrentes en Java es el manejo de hilos ( threads) . La implementación existente en la JVM desde la versión 1.4, utiliza procesos del sistema operativo subyacente. En la próxima versión 19 de Java, se incorporará soporte para JEP 425: Virtual Threads.

Que significa este cambio: escalabilidad. Manteniendo gran parte de la API existente de manejo de hilos ,concurrencia, y herramientas de coordinación, ahora será posible acceder a threads que no dependen de una relación 1:1 con un proceso del sistema operativo. Ahora un único proceso será capaz de manejar varios hilos al mismo tiempo.

Estos hilos son los denominados virtual threads, que a nivel de implementación, comparten un hilo de sistema operativo, permitiendo una relación m:n a nivel de hilos.

Las experiencias documentadas a la fecha muestran números interesantes. Aquí por ejemplo de evidencia una mejora sustancial, principalmente porque un número de tareas concurrentes, es realizada ahora por un menor número de hilos.

Usualmente, en la implementación existente actualmente, el hecho de tener un proceso asociado a un hilo, genera contención ya que es sujeto a las operaciones de bloqueo habituales de I/O. En cambio, al permitir que el mismo proceso pueda ejecutar más hilos virtuales mientra se genera contención en uno de ellos, se libera capacidad de CPU.

Si quieres iniciar en este mundo, acá un video con las experiencias utilizando el framework Quarkus ( del cual hablaremos luego ) , que ya tiene algunas integraciones, aprovechando la disponibilidad de versiones de Java 19 para evaluación.

Si quieres usar Java 19 y realizar tus propios experimentos, puedes consultar la página sobre SDKMAN, y ver que con un sólo comando ya dispones de este ambiente:

sdk install  java 19.ea.27-open

Comentanos tu experiencia!


Deja una respuesta