Actualidad
Procesador
Java
Herramienta

La concurrencia de Java da pasos en firme hacia la sencillez

La concurrencia estructurada, propuesta que se está incubando en la comunidad OpenJDK, trataría múltiples tareas que se ejecutan en diferentes subprocesos de Java como una sola unidad de trabajo

Java concurrency

La programación de subprocesos múltiples podría estar a punto de ser más fácil para los desarrolladores de Java. Así lo avanza el plan que, actualmente, se está incubando en la comunidad OpenJDK. La propuesta de concurrencia estructurada introduciría una biblioteca que trata múltiples tareas que se ejecutan en diferentes subprocesos como una sola unidad de trabajo. La nueva biblioteca agilizaría el manejo y la cancelación de errores, mejorando la confiabilidad y mejorando la observabilidad, según la propuesta. Los objetivos del plan, además, incluyen una apuesta por promover un estilo de programación concurrente que pueda eliminar los riesgos comunes que surgen de la cancelación y el cierre, como por ejemplo fugas de subprocesos y retrasos en la cancelación. En este sentido, cabe mencionar que la propuesta de simultaneidad estructurada no está dirigida a una versión específica de Java.

 

Bebe de la programación multiproceso

La concurrencia estructurada toma un enfoque de la programación multiproceso que preserva la legibilidad y la capacidad de mantenimiento que experimentan los desarrolladores con el código de un solo subproceso, afirma la propuesta. Lleva el principio de que si una tarea se divide en subtareas simultáneas, todas regresan al mismo lugar: el bloque de código de la tarea. Al volver al mismo bloque de código, la duración de una subtarea concurrente se limita a un bloque sintáctico. Debido a que las subtareas hermanas están confinadas al mismo bloque, se pueden razonar y administrar como una unidad. Las subtareas funcionan en nombre de una tarea –código en el bloque adjunto– que espera los resultados y los monitorea en busca de fallos. Al igual que con las técnicas de programación estructurada para código de un solo subproceso, el poder de la concurrencia estructurada para múltiples subprocesos proviene de dos ideas: puntos de entrada y salida bien definidos para el flujo de ejecución a través de un bloque de código, y anidamiento estricto de la vida útil de las operaciones en una forma que refleja el anidamiento en el código.

En tiempo de ejecución, la simultaneidad estructurada genera una jerarquía de tareas en forma de árbol, con subtareas hermanas que pertenecen a la misma tarea principal. El árbol es la contraparte concurrente de la pila de llamadas de un solo hilo. La concurrencia estructurada coincide con los subprocesos virtuales, que es una implementación ligera de subprocesos proporcionados por JDK. Se planea una vista previa de subprocesos virtuales para Java 19 el próximo mes de septiembre. Muchos subprocesos virtuales comparten el mismo subproceso del sistema operativo, lo que permite una gran cantidad de subprocesos virtuales. Estos pueden representar una unidad concurrente de comportamiento, incluso comportamiento de E/S. Por lo tanto, una aplicación de servidor podría usar la concurrencia estructurada para procesar miles o millones de solicitudes entrantes a la vez.

En esencia, los subprocesos virtuales ofrecen una gran cantidad de subprocesos y la concurrencia estructurada garantiza que estén correctamente coordinados. Tener una biblioteca para la concurrencia estructurada en el JDK ofrece a los desarrolladores del lado del servidor capacidad de mantenimiento y confiabilidad. No obstante, cabe mencionar que el mecanismo de interrupción de subprocesos existente no se reemplazaría con un nuevo mecanismo de cancelación de subprocesos según la propuesta actual, aunque dejan la puerta abierta de cara al futuro.



TE PUEDE INTERESAR...

Forma parte de nuestra comunidad

 

¿Te interesan nuestras conferencias?

 

 
Cobertura de nuestros encuentros
 
 
 
 
Lee aquí nuestra revista de canal

DealerWorld Digital