很抱歉,如果这里不适合回答这些问题,但我需要一些基本帮助。
我有一个名为 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/