Skip to content

1 Barreras

Barreras

Todos los mecanismos vistos en el tema anterior correspondían a herramientas para asegurar la visibilidad (siempre se obtiene el valor actualizado) y la atomicidad (exclusión mutua).

Barrera

Elemento que permite sincronizar la ejecución de varios hilos en uno o varios puntos

Sin embargo, en este tema vamos a ver herramientas que no se usan para proteger el acceso a un recurso compartido o sección crítica, sino para sincronizar la ejecución de varios hilos en uno o varios puntos. Estas herramientas son conocidas como barreras (barriers).

En un tema anterior, ya vimos una herramienta de este tipo, el método join() de la clase Thread, pero dicho método proporciona únicamente sincronización final, es decir sincronizarse con el momento en que otro hilo termina de ejecutarse. No permite realizar una sincronización inicial, es decir, que ambos hilos se sincronicen para empezar a trabajar, ni una sincronización en punto intermedio de ejecución de ambos hilos, ni una sincronización por fases con varios puntos de sincronización.

Para solucionar este problema, el paquete java.util.concurrent proporciona varias clases que permiten llevar a cabo distintos de tipos de sincronización.