Java | Фишки и трюки
7.21K subscribers
182 photos
29 videos
6 files
40 links
Java: примеры кода, интересные фишки и полезные трюки

Купить рекламу: https://telega.in/c/java_tips_and_tricks

✍️По всем вопросам: @Pascal4eg
Download Telegram
🖥 Parallel Streams: когда это действительно ускоряет

Parallel Streams — это мощный инструмент в Java, который позволяет выполнять операции со стримами параллельно, используя несколько потоков. Однако параллельность не всегда улучшает производительность.

📌 Когда Parallel Streams полезны:
1️⃣ Большие объёмы данных. При обработке сотен тысяч или миллионов элементов параллельность помогает распределить нагрузку.
2️⃣ Тяжёлые вычисления. Если каждая операция над элементом занимает значительное время.
3️⃣ Многоядерные процессоры. Выигрыш заметен, если система поддерживает многопоточность.

📌 Пример: подсчёт простых чисел параллельно
import java.util.stream.LongStream;

public class ParallelStreamExample {
public static void main(String[] args) {
long start = System.currentTimeMillis();

// Подсчёт простых чисел от 1 до 10_000_000
long count = LongStream.rangeClosed(1, 10_000_000)
.parallel() // Параллельный стрим
.filter(ParallelStreamExample::isPrime)
.count();

long end = System.currentTimeMillis();
System.out.println("Количество простых чисел: " + count);
System.out.println("Время выполнения: " + (end - start) + " мс");
}

private static boolean isPrime(long n) {
if (n <= 1) return false;
for (long i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) return false;
}
return true;
}
}

🔗 Что делает код:
1️⃣ Параллельный стрим (parallel) делит диапазон на подзадачи.
2️⃣ Функция isPrime проверяет, является ли число простым.
3️⃣ Элементы обрабатываются в нескольких потоках.

📌 Когда НЕ стоит использовать Parallel Streams:
✔️ Небольшие объёмы данных. Создание потоков может занять больше времени, чем выполнение задачи.
✔️ Лёгкие операции. Например, простое суммирование чисел.
✔️ Синхронизация или shared-state. Параллельные операции, изменяющие общий объект, могут привести к ошибкам.

Совет: Перед использованием параллельных стримов измерьте производительность и убедитесь, что прирост скорости оправдывает сложность.

#Java #Streams #ParallelStreams #Оптимизация
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤‍🔥1