Встречается на собеседованиях • сегодня

Какие знаешь примитивы синхронизации

В Java есть несколько примитивов синхронизации:

  1. synchronized – ключевое слово для блокировки метода или блока кода.

    java
    synchronized (lock) {
        // критическая секция
    }
  2. volatile – гарантирует видимость изменений переменной для всех потоков.

    java
    private volatile boolean flag;
  3. wait()/notify()/notifyAll() – методы Object для координации потоков.

    java
    synchronized (obj) {
        obj.wait();  // освобождает монитор и ждёт notify
    }
  1. ReentrantLock – более гибкая альтернатива synchronized.

    java
    Lock lock = new ReentrantLock();
    lock.lock();
    try {
        // критическая секция
    } finally {
        lock.unlock();
    }
  2. Semaphore – ограничивает количество потоков в критической секции.

    java
    Semaphore sem = new Semaphore(3);
    sem.acquire();  // уменьшает счётчик
    sem.release();  // увеличивает счётчик
  3. CountDownLatch – ожидает завершения N операций.

    java
    CountDownLatch latch = new CountDownLatch(3);
    latch.await();  // блокирует, пока счётчик не станет 0
    latch.countDown();  // уменьшает счётчик
  4. CyclicBarrier – синхронизирует потоки в определённой точке.

    java
    CyclicBarrier barrier = new CyclicBarrier(3);
    barrier.await();  // ждёт, пока все 3 потока не вызовут await
  5. Phaser – более гибкий аналог CyclicBarrier.

Каждый примитив решает конкретные задачи: блокировки, ожидание событий, ограничение доступа.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы