私は fork/join で遊んでいて、次の例を考えました:
App1
: 2 つの for ループでいくつかの乱数を生成して anArrayList
に渡しますfork
MyTask
(Fork): を反復処理しArrayLists
てすべての数値を合計し、値を返します。
import java.util.ArrayList;
import java.util.concurrent.ForkJoinPool;
public class App1 {
ArrayList list = new ArrayList();
static final ForkJoinPool mainPool = new ForkJoinPool();
public App1() {
for (int i = 0; i < 10; i++) {
list.clear();
for (int j = 1000; j <= 100000; j++) {
int random = 1 + (int)(Math.random() * ((100 - 1) + 1));
list.add(random);
}
mainPool.invoke(new MyTask(list));
}
// At the end showing all results
// System.out.println (result1 + result2 + result3...);
}
public static void main(String[] args) {
App1 app = new App1();
}
}
import java.util.ArrayList;
import java.util.concurrent.RecursiveTask;
public class MyTask extends RecursiveTask<Integer> {
ArrayList list = new ArrayList();
int result;
public MyTask(ArrayList list) {
this.list = list;
}
@Override
protected Integer compute() {
for(int i=0; i<=list.size(); i++){
result += (int)list.get(i); // adding up all numbers
}
return result;
}
}
正しい軌道に乗っているかどうかはわかりません。また、フォークからすべての結果を収集する方法もわかりません。
誰でも私のコードを見てもらえますか?