gpt4 book ai didi

java - 用于大数据的 Java 并行计算

转载 作者:行者123 更新时间:2023-12-02 06:50:02 24 4
gpt4 key购买 nike

有两组矩阵,即 A(1 500 个矩阵)和 B(150 000 个矩阵)。

对于集合 A 中的每个矩阵 a,我迭代 B 中的所有元素 b,检查 a 和 b 的条件(如果某些矩阵 b 为真,我将停止迭代并返回 true。但是如果在迭代后未找到匹配项)整个 Set B,然后返回 false)。

我的问题是如何使用 Java 使这个程序并行?

我知道矩阵集非常大(我上面发布的元素数量只是举例,在现实生活中它们会更大)。如何正确地进行所有这些计算?创建 1 5000 个线程并完成所有计算实际上并不是一个好主意。完成所有计算工作的最佳线程数量是多少?

最佳答案

正如您所说,您可能需要检查所有对,并且没有启发式方法来帮助我们确定检查顺序,因此如果检查不需要任何 I/O 或导致 CPU 浪费的东西,如果您有 4 个示例 4 core,创建4线程(0-3),线程i负责检查a(4k+i)和每个b 。在每次检查每个线程之前,您必须检查是否找到真正的对,这可以通过扩展 Thread

的类中的静态变量来完成
public class Worker extends Thread{
static int found=0;
/**
* @param args the command line arguments
*/
List<Matrix> a;
List<Matrix> b;
int myid;
int coreNumber;
Worker(List<Matrix> a, List<Matrix> b, int myid,int coreNumber){
this.a=a;
this.b=b;
this.myid=myid;
this.coreNumber=coreNumber;

}

@Override
public void run() {
for(int i=myid;i<a.size();i+=coreNumber){
for(int j=0;j<b.size();j++){
if(found==1){
return;
}
if(check(a.get(i),b.get(j))){
found=1;
return;
}
}
}
}

}

您需要等到所有线程停止工作。

关于java - 用于大数据的 Java 并行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18153368/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com