Sincronización de hilos

Definición: ¿Qué significa la sincronización de subprocesos?

La sincronización de subprocesos es la ejecución simultánea de dos o más subprocesos que comparten recursos críticos. Los subprocesos deben sincronizarse para evitar conflictos de uso de recursos críticos. De lo contrario, pueden surgir conflictos cuando los subprocesos que se ejecutan en paralelo intentan modificar una variable común al mismo tiempo.

Techinfo explica la sincronización de hilos

Para aclarar la sincronización de subprocesos, considere el siguiente ejemplo: tres subprocesos, A, B y C, se ejecutan simultáneamente y necesitan acceder a un recurso crítico, Z. Para evitar conflictos al acceder a Z, los subprocesos A, B y C deben estar sincronizados . Así, cuando A accede a Z, y B también intenta acceder a Z, el acceso de B a Z debe evitarse con medidas de seguridad hasta que A finalice su operación y salga de Z.

En Java, se utilizan dos estrategias de sincronización para evitar la interferencia de subprocesos y los errores de coherencia de la memoria:

  • Método sincronizado: incluye la palabra clave sincronizada en su declaración. Cuando un hilo invoca un método sincronizado, el método sincronizado adquiere automáticamente el bloqueo intrínseco para el objeto de ese método y lo libera cuando el método regresa, incluso si ese retorno fue causado por una excepción no detectada.
  • Declaración sincronizada: declara que un bloque de código se sincronizará. A diferencia de los métodos sincronizados, las declaraciones sincronizadas deben especificar los objetos que proporcionan el bloqueo intrínseco. Estas declaraciones son útiles para mejorar la simultaneidad con la sincronización detallada, ya que permiten evitar bloqueos innecesarios.