【问题标题】:Finding the biggest number with ForkJoin使用 ForkJoin 查找最大数
【发布时间】:2014-04-05 02:10:31
【问题描述】:

没有阻止 if delay == 2 它可以工作,但不能使用它。

这是 ForkJoin 的计算:

compute() {

    if(lastElem - firstElem == 1)
        return array[firstElem];

    if(lastElem - firstElem == 2){

        if(array[firstElem] > array[lastElem])
            return array[firstElem];
        else
            return array[lastElem];
    }

    int midElem = (firstElem + lastElem) / 2;

    MyForkJoinTask left = new MyForkJoinTask(array, firstElem, midElem);
    MyForkJoinTask right = new MyForkJoinTask(array, midElem, lastElem);

    left.fork();
    right.fork();

    int leftResult = left.join();
    int rightResult = right.join();

    if(leftResult > rightResult)
        return leftResult;
    else
        return rightResult;


}

这是我的主要方法:

main(String[] args) {
    Random r = new Random();
    for(int i = 0; i < array.length; i++){
        array[i] = r.nextInt();
    }
    MyForkJoinTask root = new MyForkJoinTask(array);
    F_J_POOL.submit(root);
    System.out.println("Result is " + root.join());
}

短错误:

线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常

在 com.bg.fork_join.MainFJ.main(MainFJ.java:24) 引起:java.lang.ArrayIndexOutOfBoundsException ... 15 更多

引起:java.lang.ArrayIndexOutOfBoundsException: 10000 在 com.bg.fork_join.MyForkJoinTask.compute(MyForkJoinTask.java:31)

你能告诉我问题出在哪里吗?

【问题讨论】:

  • 第 31 行? MyForkJoinTask.java
  • 我更改了您的代码格式,添加了缺少的返回类型声明和字段声明。同样在 StackOverflow 上,您通常不会将标题更改为“...可以关闭” - 您可以通过标记问题来存档关闭问题(“标志”就在标签下方);问题主要被关闭,因为有垃圾邮件或其他不适当的内容。这样也许可以添加更好的答案。很高兴编码你的问题得到解决:)
  • @TheConstructor 你不应该关闭垃圾邮件。您应该将其标记为删除。
  • @JanDvorak 你是对的。仍然都是以标志开头 ;-) 试图阻止评论爆炸。
  • @TheConstructor - 仅当问题不适合该站点时(离题、描述不佳等),而不是在提问者得到答案时才应关闭。请不要建议人们对此进行举报,因为我们会拒绝这些举报。

标签: java fork-join forkjoinpool


【解决方案1】:

我对@9​​87654321@ 一无所知,但仅从一般原则来看,这看起来很可疑:

if(lastElem - firstElem == 2){

    if(array[firstElem] > array[lastElem])
        return array[firstElem];
    else
        return array[lastElem];
}

您的其余代码看起来您​​正在处理从firstElem(含)到lastElem独占)的子数组,所以您不应该使用lastElem-1索引?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    • 2021-01-24
    相关资源
    最近更新 更多