Каковы прагматические c случаи использования параллельного потока в Java? - PullRequest
0 голосов
/ 23 апреля 2020

Начиная с Java -8, мы можем использовать параллельный поток (java .util.stream package)

Согласно теории, хорошо известно, что параллельный поток Java подходит, когда операция должна выполняться параллельно, в отличие от (последовательного) потока Java.

Более того, параллельный поток имеет служебную информацию о битах при управлении параллелизмом, и требуется предостережение об изобилии.

Каковы практические случаи использования, где это может использоваться? Кроме того, как это могло бы перевесить стоимость параллелизма в таких случаях практического использования?

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020

Параллельные потоки запускают операции над потоком в параллельном режиме. Когда вы хотите, чтобы обработка списка / записи была быстрой, поскольку для обработки данных используются несколько потоков. Также может быть случай, когда вы хотите обработать данные и вывести их в произвольной последовательности, так как обработка данных выполняется несколькими потоками, поэтому последовательность может быть любой.

list.parallelStream().forEach(System.out::println);

Параллельно потоки используют ForkJoinPool для обработки, поскольку это общий пул, используемый JVM, который может быть очень ограничительным. Вы можете до некоторой степени контролировать уровень параллелизма, наиболее эффективный способ получить уровень параллелизма - это согласование с ядрами процессора, то есть принять уровень параллелизма как 2*CPU_CORES

Как и в следующем примере, вы можете управлять параллелизмом:

    final int parallelism = 10;
    ForkJoinPool forkJoinPool = new ForkJoinPool(parallelism);
    forkJoinPool.submit(() ->
    list.parallelStream().forEach(System.out::println)); 

Но будьте осторожны, используя параллелизм, использование большого значения параллелизма может ухудшить производительность приложения.

0 голосов
/ 23 апреля 2020

Когда вам нужно получить много независимых данных, параллельный поток - это хорошо. Например, у вас есть приложение большой базы данных, где несколько приложений извлекают сохраненные данные из независимых таблиц или, возможно, из отдельных баз данных, параллельный поток будет действительно хорошим. Кроме того, в веб-среде запрос от пользователя не зависит от других пользователей. В этом случае параллельный поток также хорош.

...