Conceptually, it looks good. You can use the ExecutorService that you create, for example:
ExecutorService service = Executors.newFixedThreadPool(testsToBeExecuted.size());
Then you will create a list of Callables and invokeAll in the executing service itself. This essentially will do the same.
source share