迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

Java 中的并行处理

作者:迹忆客 最近更新:2023/08/01 浏览次数:

并行处理是现代编程的新趋势。 这种处理允许我们同时运行多个任务,减少处理时间,但任务应该是独立的。

在本文中,我们将了解 Java 中的并行处理,以及必要的示例和解释,以使主题变得更容易。


并行处理和顺序处理之间的区别

在顺序处理中,一个任务的所有独立进程都一一运行,当一个进程正在工作时,另一个进程需要等待。

另一方面,在并行处理中,多个进程可以同时运行,并且它们不需要等待一个进程的结束。 并行处理对于多任务处理至关重要。


Java 中使用parallelStream() 的并行处理

这个例子将说明我们如何在Java中执行并行处理。 让我们看一下下面的例子:

// importing necessary packages
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class JavaParallal {
   public static void main(String[] args) {

      // Creating an integer array
      Integer[] IntArray = {1, 2, 3, 4, 5, 6, 7, 8 };
      // Creating a list from the integer array
      List<Integer> NumList = new ArrayList<>(Arrays.asList(IntArray));

      System.out.println("The list elements using Serial Stream:");
      NumList.stream().forEach(num -> System.out.print(num + " "));  // Sequencial processing here
      System.out.println("");

      System.out.println("The list elements using Parallel Stream:");
      NumList.parallelStream().forEach(num -> System.out.print(num + " ")); // Parallal processing here
      System.out.println("");

   }
}

我们已经掌握了每条线的用途。 当您执行此代码时,您应该在控制台中获得如下所示的输出:

The list elements using Serial Stream:
1 2 3 4 5 6 7 8
The list elements using Parallel Stream:
6 5 8 3 7 4 2 1

Java中使用parallel()的并行处理

在下面的示例中,我们说明了如何使用 parallel() 方法执行并行处理。

假设我们有一个包含以下内容的文本文件:

This is line 1
This is line 2
This is line 3
This is line 4
This is line 5
This is line 6
This is line 7
This is line 8

请观察下面的示例代码:

// importing necessary packages
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.util.stream.Stream;

public class JavaParallal {
    public static void main(String[] args) throws IOException {
        // Locating the file
        File MyFile = new File("G:\\Java Projects\\SimpleJavaCodes\\src\\SampleTexts.txt");

        Stream<String> FileContent = Files.lines(MyFile.toPath()); // Reading the file

        FileContent.parallel().forEach(System.out::println); // Parallal

        FileContent.close();
    }

}

我们已经掌握了每条线的用途。 当您执行此代码时,您将在控制台中获得如下所示的输出:

This is line 6
This is line 5
This is line 2
This is line 1
This is line 4
This is line 7
This is line 8
This is line 3

使用 CompletableFuture 在 Java 中进行并行处理

在下面的示例中,我们演示了如何使用 CompletableFuture 方法执行并行处理。 看看下面的示例代码:

// importing necessary packages

import java.util.Arrays;
import java.util.List;
import java.util.concurrent.CompletableFuture;

public class JavaCompleteTableFuture {
    public static void main(String[] args) {
        try {
            List<Integer> MyList = Arrays.asList(2,3,5);   // Declaring a list element
            MyList.stream().map(
                Number->CompletableFuture.supplyAsync(
                    ()->GetNumber(Number)
                    )
                ).map(
                    CompletableFuture->CompletableFuture.thenApply(N->N*N)
                ).map(T->T.join()
                ).forEach(S->System.out.println(S + " "));

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    private static int GetNumber(int a) {
        return a+a;
    }
}

在我们上面的例子中,

  • SupplyAsync() - 此方法异步完成作业。 默认情况下,方法 ForkJoinPool.commonPool() 运行来自供应商的任务。
  • thenApply() - 此方法接受一个函数作为参数,并在当前阶段正常完成后返回一个新的 CompletableStage。
  • join() - 该方法在完成后返回结果。

当您运行上述命令时,您将在控制台中看到如下所示的输出:

16
36
100

请注意,此处共享的示例代码是 Java 语言,如果您的系统没有安装 Java,则必须在您的环境中安装 Java。

上一篇:Java 中的装饰器

下一篇:没有了

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Java 中的装饰器

发布时间:2023/08/01 浏览次数:80 分类:Java

装饰器设计模式使用户能够动态添加功能并设置对象的行为,而不影响其对象的行为。 为了扩展类的行为,装饰器大多使用继承。

将InputStream转换为Java中的文件对象

发布时间:2023/08/01 浏览次数:105 分类:Java

我们将根据 Java 版本,使用不同的方式编写不同的示例代码,将 InputStream 转换为 File 对象。 下面给出了一些方法:使用纯Java将InputStream转换为文件对象

Java 中的八皇后问题

发布时间:2023/08/01 浏览次数:188 分类:Java

本文介绍了 Java 中的八皇后问题。Java 中的八皇后问题 八皇后问题是我们必须将八个皇后放置在 8x8 的棋盘上,并且不能互相攻击。

Java 中的字谜

发布时间:2023/08/01 浏览次数:94 分类:Java

在本文中,我们将了解如何确定两个单词是否是字谜词。 我们将通过示例和解释来涵盖该主题,以使该主题变得更容易。在 Java 中查找 Anagram 在下面的示例中,我们说明了如何检查给定的两个

在 Java 中反序列化 JSON

发布时间:2023/08/01 浏览次数:99 分类:Java

本文介绍如何在 Java 中反序列化 JSON。在 Java 中反序列化 JSON 提供了用于 JSON 操作的不同库。 这些库还可以在 Java 中序列化和反序列化 JSON 对象。

在 Java 中将对象序列化为 JSON

发布时间:2023/07/21 浏览次数:197 分类:Java

本文介绍了如何使用 Java-JSON 和 Jackson API 在 Java 中将对象序列化为 JSON。在 Java 中将对象序列化为 JSON 提供了用于 JSON 操作的不同库。

在 Java 中漂亮打印 JSON 数据

发布时间:2023/07/21 浏览次数:115 分类:Java

我们将使用必要的示例和解释来讨论该主题,以使问题变得更容易。 我们将在本文中讨论三种最常用的方法。在 Java 中使用 Gson 漂亮地打印 JSON 数据

在 Java 中合并 PDF

发布时间:2023/07/21 浏览次数:160 分类:Java

本文将展示如何在 Java 中合并多个 PDF 文件以及必要的示例和解释来阐明该主题。在Java中使用PDFBox合并PDF 在下面的示例中,我们将说明如何使用 PDFBox 合并两个不同的 PDF。

在 Java 接口中定义静态方法

发布时间:2023/07/21 浏览次数:187 分类:Java

本文列出了 Java 接口中静态方法的规则,并演示了如何定义它们以及为什么我们不能重写它们。 我们还将探讨 Java 8 之前的接口中没有静态方法的原因。Java接口中的静态方法

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便