Volver a la página principal
miércoles 25 septiembre 2024
16

Cómo sincronizar hilos en Java con synchronize

El uso de la palabra clave synchronized en Java permite gestionar el acceso concurrente de múltiples hilos a un recurso compartido, evitando conflictos o comportamientos inconsistentes. Esta función asegura que solo un hilo pueda ejecutar un bloque de código o método a la vez, proporcionando un mecanismo seguro para la sincronización.

¿Qué es synchronized en Java?

La palabra clave synchronized en Java es utilizada para sincronizar el acceso de los hilos a un bloque de código o método que opera sobre recursos compartidos. Cuando un hilo adquiere el "lock" del objeto, otros hilos quedan bloqueados hasta que el primero libere el "lock", garantizando así la consistencia de los datos.

Existen dos maneras principales de usar synchronized:

  • Synchronized block: Sincroniza un bloque de código dentro de un método.
  • Synchronized method: Sincroniza un método completo, bloqueando el acceso a todos los hilos excepto al que tenga el "lock".

Ejemplos de uso de synchronized en Java

Bloque sincronizado

public class Contador {
    private int cuenta = 0;

    public void incrementar() {
        synchronized (this) {
            cuenta++;
        }
    }

    public int getCuenta() {
        return cuenta;
    }
}

En este ejemplo, el bloque synchronized (this) asegura que solo un hilo puede incrementar la variable cuenta a la vez.

Método sincronizado

public class Contador {
    private int cuenta = 0;

    public synchronized void incrementar() {
        cuenta++;
    }

    public synchronized int getCuenta() {
        return cuenta;
    }
}

Aquí, el método completo está sincronizado, lo que garantiza que solo un hilo pueda ejecutar el método incrementar() o getCuenta() a la vez.

Referencia oficial

Para más detalles, puedes consultar la documentación oficial de Java sobre synchronized.

Etiquetas:
java
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer