Встречается на собеседованиях • сегодня
Какие синхронизаторы использовал
В Java есть несколько встроенных синхронизаторов из пакета `java.util.concurrent`:
1. **Semaphore** – ограничивает количество потоков, которые могут получить доступ к ресурсу.
```java
Semaphore semaphore = new Semaphore(3); // максимум 3 потока
semaphore.acquire(); // захватывает разрешение
semaphore.release(); // освобождает
```
2. **CountDownLatch** – позволяет потокам ждать, пока счетчик не достигнет нуля.
```java
CountDownLatch latch = new CountDownLatch(3);
latch.countDown(); // уменьшает счетчик
latch.await(); // ждет обнуления
```
3. **CyclicBarrier** – синхронизирует группу потоков в определенной точке.
```java
CyclicBarrier barrier = new CyclicBarrier(3);
barrier.await(); // ждет, пока все 3 потока дойдут сюда
```
4. **Phaser** – гибкий аналог `CyclicBarrier` с динамическим числом участников.
```java
Phaser phaser = new Phaser(3);
phaser.arriveAndAwaitAdvance(); // синхронизация фаз
```
5. **Exchanger** – обмен данными между двумя потоками.
```java
Exchanger exchanger = new Exchanger<>();
String data = exchanger.exchange("Data"); // блокируется до обмена
```
Использовал их для управления конкурентным доступом, координации потоков и синхронизации выполнения задач.

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