• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Using {RecursiveTask} in Java 1.7

 
Kevin Simonson
Ranch Hand
Posts: 137
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I'm currently trying to learn how to use Fork and Join with Java 1.7. I started by taking a look at the web page at "http://www.oracle.com/technetwork/articles/java/fork-join-422606.html", and got as far as its mention of class {RecursiveTask}. At that point I thought I'd look {RecursiveTask} up at "http://docs/oracle.com/javase/7/docs/api", so I did, and noticed it gave an example of how to use {RecursiveTask} to calculate a Fibonacci number. I used its example, and just added a few more lines of code to come up with:

This works just fine when I execute "java Fibonacci 0" or "java Fibonacci 1", but when I try "java Fibonacci 2" I get the error message:

Exception in thread "main" java.lang.ClassCastException: java.lang.Thread cannot
be cast to java.util.concurrent.ForkJoinWorkerThread
at java.util.concurrent.ForkJoinTask.fork(ForkJoinTask.java:622)
at Fibonacci.compute(Fibonacci.java:21)
at Fibonacci.main(Fibonacci.java:31)

Can anybody tell me what I'm doing wrong?

Kevin S
 
Steve Luke
Bartender
Posts: 4181
21
IntelliJ IDE Java Python
  • Likes 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
You are running the task from the main thread, you need to run it from a ForkJoinPool
 
Kevin Simonson
Ranch Hand
Posts: 137
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Steve Luke wrote:You are running the task from the main thread, you need to run it from a ForkJoinPool

Thanks, Steve; that fixed it for me.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic