Java : a method to do multiple calculations on arrays quickly

标签 java multithreading large-data

很抱歉,如果这里不适合回答这些问题,但我需要一些基本帮助。

我有一个名为 Differential 的类,它有一个成员变量 mValues (List>)。我想做的是迭代所有值并将它们相互比较。这意味着我要对 5 个值进行 10 次比较。然而,这将用于至少 20,000 个列表。我想做三个计算,我想知道应该如何处理这个问题。

我目前的想法来自this multi-threading example

我想我会使用completionService来迭代多线程中的值。然后每个线程将处理多个计算并返回它们。这看起来合适吗?有没有一种我没有意识到的快速完成此操作的方法?

最佳答案

在制作多线程版本之前,我建议先制作单线程版本并向我们展示代码。然后您可以轻松地拆分 for 循环(序列)的工作。下面省略了很多细节。

mysequence = ...//array or list
//2 threads
c1=new Callable(){
Object call(){
  for(i=0...mysequence.size()/2)
     //do work
   }
return result;
}
c2=new Callable(){
Object call(){
  for(i=mysequence.size()/2+1 ... mysequence.size()-1)
     //do work
   }
return result;
}
ExecutorService exec=Executors.xxxThreadPool(2);
fut1= exec.submit(c1)
fut2 =exec.submit(c2)

fut1.get()
fut2.get()

让我找到我的另一篇文章的链接。请参阅我的回答以获得更好的示例。 Thread won't naturally exit at end of run()

关于Java : a method to do multiple calculations on arrays quickly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24920392/

相关文章:

java - 如何使用多线程使我的应用程序更快

python - Keras 模型永远用 dask 数据框进行训练

java - 重命名 zip 文件中的文件名

java - 一个 'cannot find value' 挡在我和我的第一款游戏之间。 [显示代码]

java - 在匿名 ActionListener 中调用抛出异常的方法,而不使用 try/catch

c++ - 将大量数据初始化到 C++ 容器中的最佳方法?

c++ - 写入超过1GB的.txt文件时的奇怪行为

java - xjc 如何确定生成的类使用的包?

c++ - 将 g_thread_new 与结构一起使用

mysql - Java MySQL查询线程不断增加内存使用