Java 中的并行处理
并行处理是现代编程的新趋势。 这种处理允许我们同时运行多个任务,减少处理时间,但任务应该是独立的。
在本文中,我们将了解 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 中延迟几秒钟的时间
发布时间:2023/12/17 浏览次数:217 分类:Java
-
本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。
如何在 Java 中把 Hashmap 转换为 JSON 对象
发布时间:2023/12/17 浏览次数:187 分类:Java
-
它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。
如何在 Java 中按值排序 Map
发布时间:2023/12/17 浏览次数:171 分类:Java
-
本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map
进行排序,并列出了一些示例代码来理解它。
如何在 Java 中打印 HashMap
发布时间:2023/12/17 浏览次数:192 分类:Java
-
本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。
在 Java 中更新 Hashmap 的值
发布时间:2023/12/17 浏览次数:146 分类:Java
-
本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。
Java 中的 hashmap 和 map 之间的区别
发布时间:2023/12/17 浏览次数:79 分类:Java
-
本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,
在 Java 中获取用户主目录
发布时间:2023/12/17 浏览次数:218 分类:Java
-
这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。
Java 中 size 和 length 的区别
发布时间:2023/12/17 浏览次数:179 分类:Java
-
这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。
Java 中的互斥锁
发布时间:2023/12/17 浏览次数:111 分类:Java
-
了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,