VademécumVademécum\Zonas de exclusión mutua (concepto)

Zonas de exclusión mutua (concepto)

Se denominan así a partes del código en las que se controla que sólo lo ejecuta un thread en un momento dado. El objetivo es impedir que dos o más ejecuciones pudieran solaparse introduciendo ambigüedad en el resultado final. El problema más habitual es que dos threads modifiquen en paralelo una misma variable con resultado incierto (ver “race conditions”).

Una zona de exclusión significa que java permite la entrada de un solo thread en cada momento. Si un thread llega a una de estas zonas y hay otro thread dentro, el nuevo thread se queda esperando. En un momento dado pueden haber varios threads esperando. Cuando el thread que ocupa la zona sale, uno de los threads que esperan entra.

Hay múltiples formas de establecer zonas:

     formas no estructuradas

o   cerrojos (locks)

o   semáforos

     formas estructuradas

o   bloques synchronized

o   métodos synchronized

o   monitores

principio