我正在学习java中的fork-join技术并编写了以下程序。我正在运行一个 for 循环(5 次),我想在单独的线程中运行 for 循环的内容。这是正确发生的。问题是,当所有线程都完成后,我想要一个大小为 5 的向量,它必须包含在索引 0 处执行线程 1 的结果,在索引 1 处执行线程 2 的结果...... .... 在索引 4 处执行线程 5 的结果。我清楚地看到了我想要实现的目标,但不知道它的语法。
目前我的向量中只有 1 个数字。
import java.util.Random;
import java.util.Vector;
import java.util.concurrent.*;
public class App {
public static void main(String[] args) {
// TODO Auto-generated method stub
ExecutorService executor = Executors.newCachedThreadPool();
Future<Vector<Integer> > futureResult = null;
for(int i = 0; i < 5; i++){
futureResult = executor.submit(new Callable<Vector<Integer> >(){
@Override
public Vector<Integer> call() throws Exception {
Random random = new Random();
int duration = random.nextInt(4000);
Vector<Integer> v = new Vector<Integer>();
v.add(duration);
return v;
}
});
}
executor.shutdown();
try {
System.out.println(futureResult.get());
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
}