Java ForkJoinPool没有做我期望的事情

时间:2016-04-15 04:50:13

标签: java multithreading join fork pool

我刚学习Java的ForkJoinPool。我为自己创造了一个小例子,以便获得更好的理解水平。我希望我写的代码产生一些输出,但我在控制台窗口中看不到任何内容。没有错误,所以我可能会误解如何使用这项服务。请忽略似乎无法准确描述方法正在执行的方法名称。毕竟这是临时代码。

(?=a,b,c)

此外:

import java.util.concurrent.RecursiveAction;

public class SortTask extends RecursiveAction {
    final int THRESHOLD = 10;
    int[] array;
    int begin, end;

    public SortTask(int[] array, int begin, int end) {
        this.array = array;
        this.begin = begin;
        this.end = end;
    }

    @Override
    protected void compute() {
        if((end - begin) < THRESHOLD) {
            for(int i = 0; i < array.length; i++) {
                System.out.println(i);
                array[i] = i;
            }
        } else {
            int middle = (end - begin) / 2;
            invokeAll(new SortTask(array, begin, middle), new SortTask(array, begin, middle));
            merge(array, begin, end);
        }
    }

    public void merge(int[] array, int begin, int end) {
        System.out.println(array.length);
    }
}

1 个答案:

答案 0 :(得分:0)

在ForkJoin任务真正开始之前,您的Java程序正在退出。你需要等待&#34;要在完成任务后完成,请使用invoke代替execute

pool.invoke(st);