Проверяет понимание механизма работы parallelStream в Java и его взаимодействия с ForkJoinPool.
В Java метод parallelStream() позволяет обрабатывать коллекции параллельно, используя многопоточность. По умолчанию он использует общий пул потоков ForkJoinPool.commonPool(), который создается при старте JVM. Размер пула равен Runtime.getRuntime().availableProcessors() - 1, что позволяет эффективно использовать доступные ядра процессора.
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.parallelStream()
.mapToInt(Integer::intValue)
.sum();
System.out.println(sum); // 15В этом примере parallelStream разбивает коллекцию на части и обрабатывает их параллельно в разных потоках из ForkJoinPool. Каждый поток выполняет операцию mapToInt и частичное суммирование, затем результаты объединяются.
ForkJoinPool, чтобы не блокировать общий пул.parallelStream удобен для простого параллелизма без ручного управления потоками, но требует осторожности при использовании в высоконагруженных системах. Рекомендуется применять его для задач, где операции независимы и не блокируют выполнение, чтобы избежать деградации производительности.