Встречается на 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 - увеличенный пул потоков.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы