Executors.newWorkStealingPool() allows creating a limited concurrency pool with target parallelism. Under the hood, it seems to create a new ForkJoinPool with default worker creation factory which is defined here.
This factory seems to create new threads until desired concurrency is reached. Why does this pool not allow using a subset of threads from an existing pool to support limited concurrency while still avoiding creation of new threads everytime? I would assume creation of threads is expensive in Java.