Java 并行流是 Java 8 及更高版本的一項功能,旨在利用處理器的多個核心。通常,任何 Java 代碼都有一個處理流,按順序執(zhí)行。而通過使用并行流,我們可以將代碼劃分為多個流,這些流在單獨的內(nèi)核上并行執(zhí)行,最終結(jié)果是各個結(jié)果的組合。然而,執(zhí)行順序不受我們控制。
因此,如果無論執(zhí)行順序如何,結(jié)果都不受影響,并且一個元素的狀態(tài)不影響另一個元素以及數(shù)據(jù)源也不受影響,那么建議使用并行流。
為什么使用并行流?
引入并行流是為了提高程序的性能,但選擇并行流并不總是最佳選擇。在某些情況下,我們需要按特定順序執(zhí)行代碼,在這些情況下,我們最好使用順序流來執(zhí)行任務,但會犧牲性能。兩種流之間的性能差異僅在大型程序或復雜項目中才需要考慮。對于小規(guī)模的程序,它甚至可能不會被注意到。基本上,當順序流表現(xiàn)不佳時,您應該考慮使用并行流。
創(chuàng)建流的方法
我們可以通過兩種方式創(chuàng)建,下面列出并稍后描述如下:
在流上使用parallel()方法
在集合上使用parallelStream()
方法1:在流上使用parallel()方法
BaseStream 接口的parallel () 方法返回等效的并行流。讓我們通過一個例子來解釋它是如何工作的。
在下面給出的代碼中,我們創(chuàng)建一個文件對象,該對象指向系統(tǒng)中預先存在的“txt”文件。然后我們創(chuàng)建一個 Stream,一次從文本文件中讀取一行。然后我們使用parallel()方法在控制臺上打印讀取的文件。每次運行的執(zhí)行順序都不同,您可以在輸出中觀察到這一點。下面給出的兩個輸出具有不同的執(zhí)行順序。
例子
// Java Program to Illustrate Parallel Streams // Using parallel() method on a Stream // Importing required classes import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.util.stream.Stream; // Main class // ParallelStreamTest public class GFG { // Main driver method public static void main(String[] args) throws IOException { // Creating a File object File fileName = new File("M:\\Documents\\Textfile.txt"); // Create a Stream of string type // using the lines() method to // read one line at a time from the text file Stream<String> text = Files.lines(fileName.toPath()); // Creating parallel streams using parallel() method // later using forEach() to print on console text.parallel().forEach(System.out::println); // Closing the Stream // using close() method text.close(); } }
輸出:
1A
1B
方法 2:在集合上使用parallelStream()
Collection 接口的parallelStream () 方法返回一個可能的并行流,以集合為源。讓我們通過一個例子來解釋它的工作原理。
執(zhí)行:
在下面給出的代碼中,我們再次使用并行流,但這里我們使用列表來讀取文本文件。因此,我們需要parallelStream()方法。
例子
// Java Program to Illustrate Parallel Streams // using parallelStream() method on a Stream // Importing required classes import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.util.*; // Main class // ParallelStreamsTest public class GFG { // Main driver method public static void main(String[] args) throws IOException { // Creating a File object File fileName = new File("M:\\Documents\\List_Textfile.txt"); // Reading the lines of the text file by // create a List using readAllLines() method List<String> text = Files.readAllLines(fileName.toPath()); // Creating parallel streams by creating a List // using readAllLines() method text.parallelStream().forEach(System.out::println); } }
輸出:文章來源:http://www.zghlxwxcb.cn/article/639.html
文章來源地址http://www.zghlxwxcb.cn/article/639.html
到此這篇關(guān)于什么是 Java 并行流?的文章就介紹到這了,更多相關(guān)內(nèi)容可以在右上角搜索或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!