Sobes.tech
Back to questions
Junior — Middle
60

Можете объяснить назначение и принцип работы ключевого слова synchronized в Java?

Companies where asked
СБЕР Бизнес
Prooftech
Альфа-БанкАльфа-Банк
Т-БанкТ-Банк

Answer from AI

sobes.tech AI

Ключевое слово 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 несколькими потоками.