Java并行处理数组

标签 java multithreading parallel-processing

我有一个数组,我想以不同的方式并行处理,以加快程序的整体运行时间。这是按顺序执行所有操作时程序的样子。

public static void main(String[] args) {
    ArrayList<MyObject> array = getLongListOfObjects();
    ArrayList<MyObject2> array2 = new ArrayList<MyObject2>();
    for(MyObject object : array) {
         array2.add(firstProcessingMethod(object);
    }
    ArrayList<MyObject3> array3 = new ArrayList<MyObject3>();
    for(MyObject2 object : array2) {
         array3.add(secondProcessingMethod(object);
    }
    ArrayList<MyObject4> array4 = new ArrayList<MyObject4>();
    for(MyObject3 object : array3) {
         array4.add(thirdProcessingMethod(object);
    }
    for(MyObject4 object : array4) {
         System.out.println(object.toString());
    }
}

换句话说,我想开始使用 firstProcessingMethod() 处理数组,并且在第一次迭代之后我可以开始运行 secondProcessingMethod()thirdProcessingMethod() 而数组的其余部分仍在执行 firstProcessingMethod()

最佳答案

通过 Java 8,您可以使用 Streams。

array.parallelStream()
    .map(ThisClass::firstProcessingMethod)
    .map(ThisClass::secondProcessingMethod)
    .map(ThisClass::thirdProcessingMethod)
    .forEach(System.out::println);

关于Java并行处理数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38255147/

相关文章:

java - 如何区分两个线程

python - 将独立循环分解为并行线程/进程的简单且最简单的方法

c - 为什么我的 MPI 程序没有按预期打印

python - 从单个脚本运行多个 python 脚本,并在它们之间来回通信?

java - 在 Eclipse 中使用 gradle 项目运行一个简单的 javafx 应用程序

java - 在 Spring 4 中用带注释的 Controller 替换 BaseCommandController 和 SimpleFormController

java.lang.IllegalThreadStateException : Thread already started error when using selectors with SocketChannel

Node.js 集群 - 每个核心 1 个工作线程会减慢主线程速度?

java - NetBeans 永远是 "running..."并且不会编译

java - 如何使字符串不能是数字