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

Какие знаешь реализации синхронного взаимодействия

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

  1. Synchronized методы/блоки
    Используется ключевое слово synchronized для блокировки доступа к общему ресурсу:

    java
    public synchronized void increment() {
        counter++;
    }
  2. ReentrantLock
    Более гибкая альтернатива synchronized:

    java
    Lock lock = new ReentrantLock();
    lock.lock();
    try {
        // критическая секция
    } finally {
        lock.unlock();
    }
  1. CountDownLatch
    Позволяет потокам ждать завершения операций:

    java
    CountDownLatch latch = new CountDownLatch(1);
    new Thread(() -> {
        // работа
        latch.countDown();
    }).start();
    latch.await();
  2. CyclicBarrier
    Синхронизирует группу потоков в определенной точке:

    java
    CyclicBarrier barrier = new CyclicBarrier(3);
    // потоки будут ждать друг друга
  3. Semaphore
    Ограничивает количество потоков, которые могут получить доступ к ресурсу:

    java
    Semaphore semaphore = new Semaphore(3);
    semaphore.acquire();
    // работа
    semaphore.release();

Каждый механизм подходит для разных сценариев: synchronized для простых случаев, ReentrantLock для гибкости, CountDownLatch/CyclicBarrier для координации потоков, Semaphore для ограничения доступа.

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

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

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

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