Java 中的并行流与顺序流2025 年 1 月 6 日 | 阅读 4 分钟 在 Java 中,流 (stream) 是对象的集合,可以对数据源(如数组或集合)执行各种操作,并支持不同的方法。它最初包含在 Java 8 的 java.util.stream 包中。流支持许多聚合操作,例如 filter、map、limit、reduce、find 和 match,允许程序员以任何他们认为合适的方式修改原始数据。由于传递给流的操作不会改变其源,因此会根据对其执行的操作生成一个新流。更新后的数据是初始格式的修改副本。 根据其迷人的特性,Java 已经拥有流 API 很长时间了。它增强的性能和并行处理能力也使其非常受欢迎。鉴于现代时代几乎所有现代系统都有多个核心,因此并行流对于有效利用这些核心是必不可少的,但并行编程设计很困难。因此,根据需求,程序员完全可以控制是使用顺序流还是并行流。 ![]() 顺序流 (Sequential Stream)顺序流是非并行流,它们使用单个线程处理管道。如果流操作没有被明确指定为并行,则该流被认为是顺序的。即使底层系统支持并行执行,顺序流也不会利用多核处理器,因为它的对象在同一处理系统上的单个流中进行管道化。顺序流一次执行一个操作。Java 中的顺序流由 stream() 函数返回。 示例在此示例中,print() 函数与 list.stream() 结合使用,在单个通用线程上逐个操作。原始程序的输出仅仅是因为流是顺序的,就显示了列表的内容,内容按有序序列排列。 实施 文件名: SequentialStreamExample.java 输出 Hello Welcome to WORLD! Java 中的并行流虽然并行计算可能不会在整个程序中使用,但它仍然是 Java 的一个非常有用的特性。并行流通过使用多核 CPU 来提高性能。最终结果显示为每个独立核心结果的组合。这可以通过使用并行流来实现,并行流将我们的代码分成许多流,这些流可以在不同的系统核心上并发处理。一个程序不一定需要完全并行化;然而,处理流的部分应该并行化。它们很复杂且容易出错,就像任何其他并行编程一样,但我们无法控制它们的执行顺序。这可能导致结果不稳定、不可预测。 Java 流库提供了两种快速且行为一致的方法来实现这一点。
为了确保并行流提供的结果与通过顺序流获得的结果相同,它们需要是无状态的、非干扰的并且是关联的。 示例正如我们所见,顺序与列表不一致。通过使用 parallelStream(),并行操作使用了多个线程。如果我们多次执行此代码,输出顺序也会发生变化,这一点也很明显。但是,由于这种并行流提高了效率,因此建议在顺序无关紧要的情况下使用此技术。 实施 文件名: ParallelStreamExample.java 输出 RLHello Welcome to OD!W 注意:如果我们希望对并行流中的每个元素进行排序,可以使用 forEachOrdered() 函数代替 forEach() 方法。观察以下程序。实施 文件名: ParallelStreamExample2.java 输出 Hello Welcome to WORLD! Java 中顺序流和并行流的区别
下一个主题Java泛型限制 |
java.time.format.DecimalStyle 类具有 getNegativeSign() 方法。对于此 DecimalStyle 的 Locale,使用 Java 的 DecimalStyle 类获取表示负号的字符。当该区域性具有负号时,此方法返回该字符。语法:public char getNegativeSign() 参数:不接受任何参数...
阅读 2 分钟
在本节中,我们将讨论 Java 中的老鼠走迷宫问题。老鼠走迷宫问题是面试中常见的经典回溯问题之一。问题陈述:提供了一个 R * C 矩阵形式的迷宫,其中 R 是...
5 分钟阅读
在 Java 中,public 和 private 是关键字,被称为访问修饰符或说明符。它限制了类、构造函数、变量、方法和数据成员的作用域或可访问性。这取决于它应用的对象。Java 提供了四种类型的访问...
阅读 6 分钟
在数学和计算机科学领域的许多应用程序和方法中,直线都很重要。在给定的 2D 坐标集中找到尽可能多的点可以构成一条直线是一个典型的问题。这个问题应用包括机器学习、计算机...
5 分钟阅读
在 Java 中,HashMap 是基于 Hashtable 的实现。HashMap 的实现允许我们应用所有可选的 Map 操作,如向 Map 添加数据、从 Map 删除数据、从 Map 检索键值对、确定 Map 大小等。除了这些,我们还可以...
阅读 4 分钟
Java 编程语言以其丰富的标准库而闻名,该库包含大量类和实用程序,有助于开发健壮高效的应用程序。在这些类中,System 类占有特殊的位置。它提供了访问系统...的访问权限。
阅读 3 分钟
在 Java 中,TreeSet 不是使用最广泛的 Java 集合类。但在某些情况下,它比其他集合类更受欢迎。了解 TreeSet 在哪些情况下比其他集合类更受欢迎以及它是如何实现的至关重要。它...
阅读 3 分钟
Java 是一种多功能且广泛使用的编程语言,以其面向对象的特性和平台无关性而闻名。使 Java 成为强大开发工具的关键特性之一是它对泛型的支持。Java 中的泛型允许您创建类、接口和方法...
阅读 4 分钟
在编程方面,精确度至关重要。尤其是在涉及计算和运算的应用程序中,结果的准确性至关重要。这就是浮点数的作用所在。在 Java 编程世界中,理解和有效利用 float 数据类型对于...
阅读 4 分钟
右截断素数无论从右向左连续删除数字,都会保持其素数状态,最终剩下一个个位素数。739 符合右截断素数条件,因为从 739 开始,我们先得到 73,然后得到 7,它们都是素数……
阅读 6 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India