Capítulo 14. Concurrencia en la JVM

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

Mario Fusco

Originalmente, los hilos sin procesar eran el único modelo de concurrencia disponible en la JVM, y siguen siendo la opción por defecto para escribir programas paralelos y concurrentes en Java. Sin embargo, cuando se diseñó Java hace 25 años, el hardware era radicalmente distinto. La demanda de ejecución de aplicaciones paralelas era menor, y las ventajas de la concurrencia estaban limitadas por la falta de procesadores multinúcleo: las tareas podían desacoplarse, pero no ejecutarse simultáneamente.

Hoy en día, la disponibilidad y la expectativa de la paralelización han dejado claras las limitaciones del multihilo explícito. Los hilos y los bloqueos son de nivel demasiado bajo: utilizarlos correctamente es difícil; comprender el Modelo de Memoria Java, aún más. Los subprocesos que se comunican a través de un estado mutable compartido no son aptos para el paralelismo masivo, pues dan lugar a sorpresas no deterministas cuando el acceso no está bien sincronizado. Además, aunque tus bloqueos estén dispuestos correctamente, el propósito de un bloqueo es restringir los hilos que se ejecutan en paralelo, reduciendo así el grado de paralelismo de tu aplicación.

Como Java no admite memoria distribuida, es imposible escalar horizontalmente ...

Get 97 cosas que todo programador Java debe saber now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.