我想知道是否可以生成每个loop iteration
(每个都单独iteration
生成thread
)并最终收集结果。考虑这个例子,没有什么特别的。只是一个简单的for-loop
,但想法是扩展它。正文for loop
无所谓,我只是填了一些代码。但基本上假设它有一些昂贵的计算,每次迭代需要几分钟才能完成。所以我想在一个单独的线程中进行每个循环计算。
public class Threadspawns {
private double[] arr = new double[4];
public void calculations(){
for (int i =2; i < 6; i++){
//expensive calculation
arr[i-2]=Math.pow(i,500);
}
}
public static void main(String[] args){
Threadspawns t = new Threadspawns();
long start = System.currentTimeMillis();
t.calculations();
long end = System.currentTimeMillis();
System.out.println(Arrays.toString(t.arr));
System.out.println("time taken "+ (end-start));
}
}
同样,如果可以将它们实际拆分recursive calls
为多个线程并在它们返回时收集它们。例子是斐波那契
public static int fibonacci(int n){
if (n==0)
return 0;
if (n==1)
return 1;
return fibonacci(n-2)+fibonacci(n-1);
}
斐波那契递归方法可能无法完成。但是如果可能的话,线程之间并行递归调用的任何其他示例都会很高兴知道。
PS:我有基本的知识Thread and Runnable
,但想知道以上是否可行