There is a trick on how to perform a parallel process in a particular fork-join pool. If you perform it as a job in a fork-join supply, it waits there and does not use the common one.
ForkJoinPool forkJoinPool = new ForkJoinPool(2);
forkJoinPool.submit(() ->
//parallel task here, for example
IntStream.range(1, 1_000_000).parallel().filter(PrimesPrint::isPrime).collect(toList())
).get();
The method is based on ForkJoinTask.fork which defines: "Designs to asynchronously perform this job in the pool the current duty is working in, if applicable, or practicing the ForkJoinPool.commonPool() if not inForkJoinPool()"