java.lang.Thread 无法转换为 java.util.concurrent.ForkJoinWorkerThread

2024-02-16

我正在 Java SE 7 中使用 RecursiveTask 测试斐波那契示例http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/RecursiveTask.html http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/RecursiveTask.html.

程序如下:

import java.util.concurrent.*;

public class testfuture{
    public static void main(String[] args) {
        System.out.println("Hello, World");
        Fibonacci fib = new Fibonacci(10);
        int result = fib.compute();
        System.out.println(result);
        }
}

class Fibonacci extends RecursiveTask<Integer> {
    final int n;
    Fibonacci(int n) { this.n = n; }
    public Integer compute() {
        if (n <= 1)
        return n;
        Fibonacci f1 = new Fibonacci(n - 1);
        f1.fork();
        Fibonacci f2 = new Fibonacci(n - 2);
        return f2.invoke() + f1.join();
    }
}

但是,程序抛出运行时异常

Hello, World
Exception in thread "main" java.lang.ClassCastException: java.lang.Thread cannot be cast to java.util.concurrent.ForkJoinWorkerThread
    at java.util.concurrent.ForkJoinTask.fork(Unknown Source)
    at Fibonacci.compute(testfuture.java:21)
    at testfuture.main(testfuture.java:9)

我用谷歌搜索了这个问题,但无法找出问题所在。

感谢您的帮助。

===============

解决方案:

public class testfuture{
    public static void main(String[] args) {
        System.out.println("Hello, World");
        Fibonacci fib = new Fibonacci(10);
        ForkJoinPool pool = new ForkJoinPool();
        int result = pool.invoke(fib);
        //int result = fib.compute(); //run-time exception
        System.out.println(result);
        }
}

您误用了 ForkJoinTask。

ForkJoinTasks 的要点是在一个分叉连接池 http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ForkJoinPool.html.
池将调用compute()在其 ForkJoinWorkerThreads 中为您执行任务的方法。

你不应该打电话compute()直接地。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java.lang.Thread 无法转换为 java.util.concurrent.ForkJoinWorkerThread 的相关文章

随机推荐

  • Android Studio StackOverFlowError:null

    今天更新到 2 3 版本后 我的 Android Studio 停止工作了 null java lang StackOverflowError at java lang ClassLoader defineClass1 Native Met
  • 执行 WebAPI 2 JSON Post 时未找到 HttpRequestBase.GetBufferedInputStream

    使用 Visual Studio 创建 MVC5 WebAPI2 项目 创建了一个基本的 JSON POST 发布参数导致 HttpRequestBase GetBufferedInputStream 未找到失败 适用于 带有视觉工作室的W
  • Spark 文件流获取文件名

    我需要知道从输入目录流式传输的输入文件的文件名 下面是scala编程中的spark FileStreaming代码 object FileStreamExample def main args Array String Unit val s
  • wcf REST 服务和 JQuery Ajax Post:不允许方法

    有人知道这是怎么回事吗 我无法从 WCF Rest 服务获取 json 响应 Jquery ajax type POST url http localhost 8090 UserService ValidateUser data usern
  • 无法从 Spring Cloud Config Server 获取值到我的 Config-Client(limits-service)

    经过几天的互联网搜索和多次尝试 对我来说没有任何结果 我在这里写下 我有项目 弹簧云配置服务器其中包含以下文件 可以从以下位置访问完整项目https github com AshishBharadwaj94 spring cloud con
  • 线程的垃圾收集

    我需要保护吗Thread来自垃圾收集器的对象 那么包含线程运行的函数的对象呢 考虑这个简单的服务器 class Server readonly TcpClient client public Server TcpClient client
  • Node.js Express socket.io 端口 3000 正在使用

    我一直在关注这个 http socket io get started chat http socket io get started chat 有关如何使用 socket io 制作简单聊天应用程序的教程 然而 我尝试使用 Express
  • Xcode 构建时错误:“无法加载文件列表的内容:‘.../Info.plist’(在目标‘xxxx’中)

    Xcode 今天开始在项目中抛出此错误 我无法弄清楚它的含义以及如何对其进行故障排除 并且它不会出现在任何搜索中 它在尝试构建到设备后立即发生 没有编译脚本等 错误 无法加载文件列表的内容 Users Products Debug appl
  • 如何将字符串长度转换为像素单位?

    我有一个像这样的字符串 string s This is my string 我正在创建 Telerik 报告 我需要定义一个textbox这就是我的绳子的宽度 但是 大小属性需要设置为单位 像素 点 英寸等 如何将字符串长度转换为像素 以
  • C++ 中整数的幂[重复]

    这个问题在这里已经有答案了 我需要得到结果pow a b 作为整数 a 和 b 也是整数 目前 计算中 int pow double a double b 包含错误 一个函数可以是什么 它可以对整数执行 pow a b 并返回一个整数 但奇
  • 我可以在 C# 中将 json 反序列化为匿名类型吗?

    我从数据库中读取了一个很长的json 我只想要该 json 的一个属性 我有两个选择 A 为该 json 创建一个接口并反序列化到该接口 这是否有点矫枉过正 因为我只需要一个属性 b 找到我需要的子字符串 正则表达式 哪一个是首选 更新 我
  • 在 C++0x 中传递/移动构造函数的参数

    如果我有一个带有 n 个参数的构造函数 那么该构造函数的任何参数都可以是右值和左值 是否可以通过右值的移动语义来支持这一点 而无需为每个可能的右值 左值组合编写 2 n 构造函数 你可以按值来获取每一项 如下所示 struct foo fo
  • 如何在 Jenkins 中手动安装插件

    从更新中心安装插件会导致 检查互联网连接 无法连接到http www google com http www google com 也许您需要配置 HTTP 代理 部署插件失败 详细信息 hudson util IOException2 无
  • 使用 HtmlService HtmlTemplate 时设置 Google Apps 脚本 showModalDialog 的高度

    我目前正在将使用已弃用的 UI 服务的 Google Apps 脚本更改为 HtmlService 我使用以下代码创建了一个模式对话 在电子表格容器绑定脚本中 var htmlTemplate HtmlService createTempl
  • Angular 导出 Excel 客户端

    我正在使用 Angular v4 我想如何从组件中的对象开始构建 Excel 电子表格 我需要点击按钮下载 Excel 文件 并且我必须在客户端执行此操作 我有一个由数组组成的 json 文件 我需要将其传输到 Excel 文件上 可能可以
  • Strapi v4:填充时没有关系字段

    我正在尝试使用关系名称填充特定关系 categories 与 populate 参数结合使用 但它不会填充categories 当我查看架构时 我发现关系字段存在于属性对象中 但我的回复中仍然只得到非关系字段 我尝试了上面提到的所有组合St
  • 无需 Google 对话框的语音识别

    我将尝试使用带有 RecognitionListener 的语音识别 无需 Google 对话框 但不起作用 启动应用程序时只会发出蜂鸣声 我已将音频记录和互联网权限添加到清单文件中 我希望你告诉我并帮助我找到错误 我在 Log cat 上
  • 加水动画

    我正在尝试获取擦除动画以使圆圈看起来像它充满了水 我遇到了两个错误 甚至无法解决第三个错误 填错了方式 填充后重置为空 黑色 目前 我正在使用 img 标签 但我想将此效果移至body background image 并需要一些关于如何做
  • 这是使用 java 关键字“interface”的正确位置吗?

    我对 Java 相当陌生 在阅读了一些有关路径查找的信息后 我读到了有关使用空类作为 interface 对于未知的对象类型 我正在用 Java 开发一个基于医院主题的游戏 至此 用户可以搭建一个接待台和一个全科医生办公室 它们是两种不同类
  • java.lang.Thread 无法转换为 java.util.concurrent.ForkJoinWorkerThread

    我正在 Java SE 7 中使用 RecursiveTask 测试斐波那契示例http docs oracle com javase 7 docs api java util concurrent RecursiveTask html h