Java 使用Bubblesort与fork/join池并行排序Arraylist

Java 使用Bubblesort与fork/join池并行排序Arraylist,java,recursion,arraylist,forkjoinpool,Java,Recursion,Arraylist,Forkjoinpool,所以我尝试使用Fork/Join池对ArrayList进行排序。我将使用的排序算法并不重要:我只是在这里选择了一个随机算法。重要的是我应该如何使用fork/join池的递归任务,以便ArrayList将继续拆分,直到ArrayList大小达到某个数字(如1000),然后它将执行排序,然后它将合并回一个ArrayList。 这是我的密码: 转让5 public class assignment5 { ArrayList<Integer> numbers = new Array

所以我尝试使用Fork/Join池对ArrayList进行排序。我将使用的排序算法并不重要:我只是在这里选择了一个随机算法。重要的是我应该如何使用fork/join池的递归任务,以便ArrayList将继续拆分,直到ArrayList大小达到某个数字(如1000),然后它将执行排序,然后它将合并回一个ArrayList。 这是我的密码:

转让5

public class assignment5 {

    ArrayList<Integer> numbers = new ArrayList<>();
//lets say this arraylist is full with random numbers

    public void run(){

        Instant start = Instant.now();

        MyRecursiveTask myRecursiveTask = new MyRecursiveTask(numbers);
        ArrayList<Integer> mergedResult = ForkJoinPool.invoke(myRecursiveTask);

        Instant end = Instant.now();

        Duration duration = Duration.between(start, end);
        System.out.println("Seconds: " + duration.getSeconds());

    }

}
不是静态方法,但您正在按原样使用

您需要创建
ForkJoinPool
的实例,并调用该实例的
invoke
。 此外,您还需要一个显式转换,以使事情按您所希望的方式工作(关于
ArrayList

用这些替换给你“错误”的行,它就会工作

ForkJoinPool forkJoinPool = new ForkJoinPool();
ArrayList<Integer> mergedResult = (ArrayList<Integer>) forkJoinPool.invoke(myRecursiveTask);
ForkJoinPool-ForkJoinPool=new-ForkJoinPool();
ArrayList mergedResult=(ArrayList)forkJoinPool.invoke(myRecursiveTask);
希望我能帮忙

PS:如果您还没有这样做,我邀请您阅读其他用户的评论,您可能会发现它们很有帮助。

“在这里调用它会给我错误”-如果您遇到错误,请在问题中包含有关该错误的详细信息。请阅读“如何创建错误”。然后使用链接改进您的问题(不要通过评论添加更多信息)。否则我们将无法回答您的问题并帮助您。提示:阅读。。。您绝对不希望在测量性能时出现任何打印语句。这些印刷品“相当”昂贵,并且在持续时间上可能会有很大差异。以某种方式“使用”该操作的结果(因此:打印它)可能是一个好主意,但这应该在您获得第二个时间戳之后发生!
ForkJoinPool forkJoinPool = new ForkJoinPool();
ArrayList<Integer> mergedResult = (ArrayList<Integer>) forkJoinPool.invoke(myRecursiveTask);