title: Which is better executor to pass to CompletableFuture supplyAsync Executors.newFixedThreadPool(10) or new ForkJoinPool(10)
body: <p>I'm using CompletableFuture.supplyAsync, I don't want to use Forkjoinpool.commonpool, I want to pass a pool to it.</p>
  
  <p>Currently I'm creating static pool reference and using it, because I don't want to create pool for every request. </p>
  
  <p>I want to know which of the below 2 ways is best.</p>
  
  <pre><code>private static ExecutorService processingPool = Executors.newFixedThreadPool(10);
  CompletableFuture.supplyAsync( () -&gt; process(),processingPool);
  </code></pre>
  
  <p>or</p>
  
  <pre><code>private static ForkJoinPool processingPool = new ForkJoinPool(10);
  CompletableFuture.supplyAsync( () -&gt; process(),processingPool);
  </code></pre>
  
  <p>Also I read that the ForkJoinPool creates threads in daemon mode. I'm using ".get" blocking call at the end of all processing to combine the results. So my question here is, in case if I use forkJoinPool in the above does the JVM wait till the completion as I used ".get" blocking call or will it exit as they are daemon threads.</p>