title: Creating a custom java.util.concurrent.ForkJoinTask<V>
body: <p>I am currently evaluating various concurrency solutions to solve a business problem.  The use case is akin to the "embarassingly-parallel" algorithim.</p>
  
  <p>Basically for a single user request, we need to retrieve data from multiple different data sources before computing the response.  Currently all 3 DAO calls are made serially but have no inter dependencies so can be made in parallel.</p>
  
  <p>Solutions implemented so far:</p>
  
  <ul>
  <li>java.util.concurrent.ExecutorService using Callables and Futures</li>
  <li>org.springframework.scheduling.annotation.Async to enable spring manage the thread pool but sill allow me to make aysnchronous calls</li>
  <li>Akka (deemed overkill) for our relatively simple use case</li>
  </ul>
  
  <p>Last framework I wanted to evaluate was Java ForkJoin framework, I can see multiple examples of use of RecursiveTasks, but my use case is not recursive in nature so doesnt fit the model:
  if task is small enough
    do it
  else
    split it and recursively call same method (i.e. divide and conquer)</p>
  
  <p>My use case is, split task into 3 tasks.  fork all 3 and join again.  Is this even a valid use case for the ForkJoin implementation?  Or should i stick with the generic ExecutorService implementation. </p>