Java 中的并行流10 Sept 2024 | 5 分钟阅读 Java 8(或更高版本)的一个突出特点是 Java 并行流。它旨在利用处理器的多个核心。通常,任何 Java 代码只有一个处理流,它是顺序执行的。然而,通过使用并行流,可以将 Java 代码分成多个流,这些流在各自的核心上并行执行,最终结果是将各个结果组合在一起。它们的执行顺序不受我们控制。因此,建议在单个项目的执行顺序不影响最终结果时使用并行流。 并行流分析为了提高程序的性能,引入了并行流。然而,这并不能保证应用并行流就能提升结果。例如,可能会出现代码必须按特定顺序执行的情况。在某些情况下,我们需要代码按特定顺序执行,在这种情况下,需要使用顺序流而不是并行流。 创建流的不同方法有两种创建方式,如下列出并稍后描述:
在流上使用 parallel() 方法BaseStream 接口的 parallel() 方法返回一个等效的并行流。让我们通过一个例子来理解它的工作原理。 文件名: ParallelStream.java 输出 1 Vestibulum urna lacus, eleifend venenatis ipsum at, venenatis fringilla mauris. Fusce nulla augue, convallis at velit ac, pulvinar convallis eros. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed ut ipsum molestie dolor dictum luctus. Maecenas interdum erat feugiat rhoncus mattis. Phasellus facilisis ex non magna faucibus mollis. Vestibulum eu tellus nec lectus rutrum ornare ac tincidunt sem. 说明: 在上面的程序中,我们创建了一个文件对象,指向系统中已存在的 `parallelstream.txt` 文件。之后,创建了一个流,该流从文本文件中读取(一次一行)。然后我们调用 `parallel()` 方法在控制台显示 `parallelstream.txt` 的内容。请注意,每次执行上述代码时,执行顺序都不同。再次执行代码,将在控制台上显示以下输出: 输出 2 Fusce nulla augue, convallis at velit ac, pulvinar convallis eros. Vestibulum urna lacus, eleifend venenatis ipsum at, venenatis fringilla mauris. Maecenas interdum erat feugiat rhoncus mattis. Phasellus facilisis ex non magna faucibus mollis. Vestibulum eu tellus nec lectus rutrum ornare ac tincidunt sem. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed ut ipsum molestie dolor dictum luctus. 在 Collection 上使用 parallelStream()parallelStream() 方法是 Collection 接口的一部分,并返回一个以 collection 为源的并行流。它的工作原理在以下示例中进行了说明。 文件名: ParallelStream.java 输出 1 Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed ut ipsum molestie dolor dictum luctus. Vestibulum urna lacus, eleifend venenatis ipsum at, venenatis fringilla mauris. Maecenas interdum erat feugiat rhoncus mattis. Phasellus facilisis ex non magna faucibus mollis. Fusce nulla augue, convallis at velit ac, pulvinar convallis eros. Vestibulum eu tellus nec lectus rutrum ornare ac tincidunt sem. 说明: 在上述代码中,我们正在使用并行流。但是,我们正在使用 List 来读取 `parallelstream.txt` 文件。因此,需要 `parallelstream()` 方法。 并行执行流的其他示例让我们看一些并行执行流的更多示例。 文件名: ParallelStream1.java 输出 In Normal 1 2 3 4 5 In Parallel 3 5 4 2 1 让我们看另一个例子。 文件名: ParallelStream2.java 输出 In Normal 1 2 3 4 5 In Parallel 3 5 4 2 1 Java 程序检查流是否正在并行运行我们还可以检查流是否正在并行运行。 文件名: ParallelStream3.java 输出 In Normal The stream is not running parallelly. 1 2 3 4 5 In Parallel The stream is running parallelly. 3 5 4 1 2 下一主题Java 将字节转换为无符号字节 |
在 Java 中,接口是一种强大的概念,它使我们能够指定类必须遵循的契约。它充当创建具有相关行为的多个类的指南。虽然方法是接口的主要组成部分,但它还可以具有其他有助于...
阅读 4 分钟
在本节中,我们将学习什么是幸运数,并创建 Java 程序来检查给定的数字是否是幸运数。幸运数程序经常在 Java 编码测试和学术中出现。幸运数 自然数的序列或...
阅读 3 分钟
Evil number 是 Java 中另一种特殊的正整数,其二进制表示中包含偶数个 1。与质数和阿姆斯特朗数不同,Evil number 不那么受欢迎,面试官也不会经常问。不是 Evil number 的数被称为 odious...
阅读 3 分钟
数组的数组可以是一个二维数组。二维数组由显示行和列集合的矩阵组成。我们可以使用它们的索引来访问二维数组中的单个单元格,就像访问一维数组一样,因为元素...
阅读 8 分钟
Java 5 中引入的泛型为开发人员编写和使用 Java 集合的方式带来了革命性的变化。泛型允许类和方法对各种类型的对象进行操作,同时提供编译时类型安全。这一强大功能具有许多优点,有助于编写更清晰、更...
阅读 4 分钟
在本节中,我们将学习如何在 Java 中查找蛋糕数。蛋糕数 CKn 表示用 n 个平面切割可以将蛋糕分成最多的块数。薄饼数的三个维度版本是蛋糕数。在...
阅读 6 分钟
java.nio.charset.CharsetEncoder 包包含标准方法 encode(CharBuffer input)。CharsetEncoder 负责将输入字符缓冲区中的剩余字符转换为全新分配的字节缓冲区。整个编码过程仅由 encode() 方法实现。如果操作当前...
阅读 3 分钟
级数 12+32+52+⋯+(2*n−1)2 表示初始奇数的平方之和。序列中的每一项都是奇数的平方,从 1 开始,后一项增加 2。这个级数很有趣,因为:涉及的数字是奇数...
阅读 4 分钟
顺序搜索,也称为线性搜索,是一种简单的搜索算法,用于在列表或数组中查找特定的目标元素。搜索过程涉及逐个检查列表中的每个元素,直到找到所需的元素或直到...
阅读9分钟
java.nio.DoubleBuffer 有一个 limit() 函数。DoubleBuffer 类用于调整此 DoubleBuffer 的限制。此方法使用参数设置此缓冲区的新的限制,该参数是要设置的限制。这个新的限制没有被设置,并且...
阅读 3 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India