Встречается на 2% собеседований по Java

Как запустить потоки для решения 10000 задач

В Java можно использовать ExecutorService для эффективного управления потоками. Вот пример с фиксированным пулом потоков:

java
ExecutorService executor = Executors.newFixedThreadPool(4); // 4 потока
List<Future<?>> futures = new ArrayList<>();

for (int i = 0; i < 10000; i++) {
    int taskNumber = i;
    futures.add(executor.submit(() -> {
        // Логика задачи
        System.out.println("Task " + taskNumber + " executed");
    }));
}

// Ожидаем завершения всех задач
for (Future<?> future : futures) {
future.get(); // Блокирует, пока задача не завершится
}

executor.shutdown();

text

Ключевые моменты:
- Размер пула должен быть оптимальным (обычно равно количеству ядер CPU)
- `Future.get()` блокирует поток, пока задача не завершится
- Всегда завершайте `ExecutorService` через `shutdown()`

Для CPU-bound задач лучше использовать `ForkJoinPool`, для IO-bound - увеличенный пул потоков.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы