Using the fork/join framework instead of executors
Executors allow you to avoid the creation and management of threads. You implement tasks by implementing Runnable
or Callable
interfaces and sending them to the executor. It has a pool of threads and uses one of them to execute the tasks.
Java 7 provides a new kind of executor with the fork/join framework. This executor, implemented in the ForkJoinPool
class, is designed for problems that can be split into smaller parts using the divide and conquer technique. When you implement a task for the fork/join framework, you have to check the size of the problem you have to resolve. If it's bigger than a predefined size, you divide the problem into two or more subcategories and create as many subtasks as the number of divisions you have made. The task sends these subtasks to the ForkJoinPool
class using the fork()
operation and waits for its finalization using the join()
operation.
For these kinds of problems, fork/join pools get better performance...