Встречается на собеседованиях • сегодня
Какие знаешь классы для многопоточности в Java
В Java для многопоточности есть несколько ключевых классов и интерфейсов:
1. **Thread** – базовый класс для создания потоков.
```java
Thread thread = new Thread(() -> System.out.println("Running"));
thread.start();
```
2. **Runnable** – интерфейс для определения задачи, выполняемой в потоке.
```java
Runnable task = () -> System.out.println("Task running");
new Thread(task).start();
```
3. **Callable** – аналог `Runnable`, но возвращает результат и может выбрасывать исключения. Используется с `ExecutorService`.
4. **ExecutorService** – интерфейс для управления пулами потоков.
```java
ExecutorService executor = Executors.newFixedThreadPool(2);
executor.submit(() -> System.out.println("Executed"));
executor.shutdown();
```
5. **Future** – представляет результат асинхронной операции (возвращается `ExecutorService.submit()`).
6. **Synchronized коллекции** – `Collections.synchronizedList()`, `ConcurrentHashMap` и др.
7. **Lock и Condition** – альтернатива `synchronized` с большей гибкостью (`ReentrantLock`, `ReadWriteLock`).
8. **Atomic-классы** (`AtomicInteger`, `AtomicReference`) – для атомарных операций без блокировок.
9. **CountDownLatch, CyclicBarrier, Semaphore** – синхронизаторы из `java.util.concurrent`.
Пример с `Callable` и `Future`:
```java
ExecutorService executor = Executors.newSingleThreadExecutor();
Future future = executor.submit(() -> 42);
System.out.println(future.get()); // 42
executor.shutdown();
```

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