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

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

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

  1. synchronized - ключевое слово для блоков/методов:
java
public synchronized void increment() {
    count++;
}
  1. wait()/notify()/notifyAll() - методы Object для координации потоков:
java
synchronized(lock) {
    while(!condition) {
        lock.wait();
    }
    // работа
    lock.notifyAll();
}
  1. ReentrantLock - более гибкая альтернатива synchronized:
java
Lock lock = new ReentrantLock();
lock.lock();
try {
    // критическая секция
} finally {
    lock.unlock();
}
  1. Semaphore - ограничивает количество потоков:
java
Semaphore sem = new Semaphore(3);
sem.acquire();
try {
    // доступ к ресурсу
} finally {
    sem.release();
}
  1. CountDownLatch/CyclicBarrier - для ожидания завершения потоков

  2. Atomic* классы (AtomicInteger и др.) - атомарные операции без блокировок

Выбор зависит от конкретной задачи - от простых synchronized до сложных комбинаций примитивов из java.util.concurrent.

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

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

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

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