Встречается на собеседованиях • сегодня
Что такое ForkJoinPool
ForkJoinPool — это специализированная реализация ExecutorService для работы с задачами, которые можно рекурсивно разбивать на подзадачи (fork) и затем объединять результаты (join). Оптимизирован для работы с алгоритмами типа "разделяй и властвуй", например, параллельная сортировка или обход деревьев.
Особенности:
- Использует work-stealing алгоритм: свободные потоки "крадут" задачи у занятых.
- Подходит для рекурсивных задач с высокой степенью параллелизма.
- По умолчанию использует `Runtime.getRuntime().availableProcessors()` потоков.
Пример:
```java
class FibonacciTask extends RecursiveTask {
final int n;
FibonacciTask(int n) { this.n = n; }
protected Integer compute() {
if (n <= 1) return n;
FibonacciTask f1 = new FibonacciTask(n - 1);
f1.fork(); // Асинхронный запуск подзадачи
FibonacciTask f2 = new FibonacciTask(n - 2);
return f2.compute() + f1.join(); // Ожидание результата и объединение
}
}
// Использование:
ForkJoinPool pool = new ForkJoinPool();
int result = pool.invoke(new FibonacciTask(10));
```
Важно: для CPU-bound задач, но не для блокирующих операций (I/O).

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