Встречается на собеседованиях • сегодня
Какие знаешь инструменты для многопоточной работы
В Java есть несколько инструментов для многопоточной работы:
1. **Thread/Runnable** – базовые классы для создания потоков.
```java
new Thread(() -> System.out.println("Running")).start();
```
2. **ExecutorService** – пулы потоков (FixedThreadPool, CachedThreadPool и др.).
```java
ExecutorService executor = Executors.newFixedThreadPool(4);
executor.submit(() -> task());
```
3. **Future/Callable** – асинхронное выполнение с возвратом результата.
```java
Future future = executor.submit(() -> 42);
```
4. **CompletableFuture** – асинхронные цепочки с колбэками.
```java
CompletableFuture.supplyAsync(() -> "Hello")
.thenApplyAsync(s -> s + " World");
```
5. **ForkJoinPool** – для рекурсивного параллелизма (например, в Stream API).
6. **Concurrent Collections** – `ConcurrentHashMap`, `CopyOnWriteArrayList` и др.
7. **Synchronized/Locks** – `synchronized`, `ReentrantLock`, `ReadWriteLock`.
8. **Atomic-классы** – `AtomicInteger`, `AtomicReference` и др. для lock-free операций.
9. **Stream API (parallelStream)** – параллельная обработка коллекций.
```java
list.parallelStream().map(x -> x * 2).toList();
```
10. **Reactive (RxJava, Project Reactor)** – реактивные потоки.

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