Встречается на собеседованиях • сегодня
Какие знаешь примитивы синхронизации
В Java есть несколько примитивов синхронизации:
-
synchronized – ключевое слово для блокировки метода или блока кода.
javasynchronized (lock) { // критическая секция } -
volatile – гарантирует видимость изменений переменной для всех потоков.
javaprivate volatile boolean flag; -
wait()/notify()/notifyAll() – методы Object для координации потоков.
javasynchronized (obj) { obj.wait(); // освобождает монитор и ждёт notify }
-
ReentrantLock – более гибкая альтернатива synchronized.
javaLock lock = new ReentrantLock(); lock.lock(); try { // критическая секция } finally { lock.unlock(); } -
Semaphore – ограничивает количество потоков в критической секции.
javaSemaphore sem = new Semaphore(3); sem.acquire(); // уменьшает счётчик sem.release(); // увеличивает счётчик -
CountDownLatch – ожидает завершения N операций.
javaCountDownLatch latch = new CountDownLatch(3); latch.await(); // блокирует, пока счётчик не станет 0 latch.countDown(); // уменьшает счётчик -
CyclicBarrier – синхронизирует потоки в определённой точке.
javaCyclicBarrier barrier = new CyclicBarrier(3); barrier.await(); // ждёт, пока все 3 потока не вызовут await -
Phaser – более гибкий аналог CyclicBarrier.
Каждый примитив решает конкретные задачи: блокировки, ожидание событий, ограничение доступа.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы