Sobes.tech
Junior — Middle

¿Puede explicar el propósito y el principio de funcionamiento de la palabra clave synchronized en Java?

sobes.tech AI

Respuesta de la IA

Ключевое слово synchronized в Java используется для управления доступом к разделяемым ресурсам в многопоточной среде. Оно обеспечивает, что только один поток может выполнить определённый блок кода или метод одновременно, предотвращая состояния гонки и обеспечивая корректность данных.

Принцип работы:

  • Когда поток входит в synchronized-блок или метод, он захватывает монитор (lock) объекта.
  • Другие потоки, пытающиеся войти в этот же synchronized-блок или метод на том же объекте, будут ждать, пока монитор не освободится.
  • После выхода из synchronized-блока монитор освобождается, и следующий ожидающий поток может войти.

Пример:

public class Counter {
    private int count = 0;

    public synchronized void increment() {
        count++;
    }

    public int getCount() {
        return count;
    }
}

Здесь метод increment синхронизирован, чтобы избежать одновременного изменения переменной count несколькими потоками.