Sobes.tech
Назад к вопросам
Senior
6

Какие методы и механизмы синхронизации потоков в Java вы знаете?

Компании, где спрашивали
Napoleon IT

Ответ от нейросети

sobes.tech AI

В Java для синхронизации потоков используются следующие основные методы и механизмы:

  • Ключевое слово synchronized — блокировка методов или блоков кода для обеспечения взаимного исключения.
  • Объектные методы wait(), notify(), notifyAll() — для организации взаимодействия между потоками через монитор.
  • Классы из пакета java.util.concurrent:
    • ReentrantLock — более гибкая блокировка с возможностью попытки захвата и таймаутов.
    • Semaphore — для ограничения количества потоков, одновременно выполняющих определённый участок кода.
    • CountDownLatch, CyclicBarrier — для координации запуска или завершения потоков.
    • ConcurrentHashMap, BlockingQueue — потокобезопасные коллекции.
  • Атомарные классы из java.util.concurrent.atomic — для операций без блокировок, например, AtomicInteger.

Пример использования synchronized:

public class Counter {
    private int count = 0;

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

    public synchronized int getCount() {
        return count;
    }
}

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