In this recipe, you will learn how to use the basic elements of the fork/join framework. This includes the following:
- Creating a ForkJoinPool object to execute the tasks
 - Creating a subclass of ForkJoinTask to be executed in the pool
 
The main characteristics of the fork/join framework you're going to use in this example are as follows:
- You will create ForkJoinPool using the default constructor.
 - Inside the task, you will use the structure recommended by the Java API documentation:
 
        if (problem size > default size){ 
          tasks=divide(task); 
          execute(tasks); 
        } else { 
          resolve problem using another algorithm; 
        } 
- You will execute the tasks in a synchronized way. When a task executes two or more subtasks, it waits for their finalizations. In this way, the thread that was executing that task (called worker thread) will look for other tasks...