code: @Override
  	protected void doExecute() throws Exception {
  		ExecutorService execService = createExecutorService();
  		CompletionService<Boolean> completionService = new ExecutorCompletionService<>(execService);
  
  		for (final File script : scripts) {
  			completionService.submit(new Callable<Boolean>() {
  				@Override
  				public Boolean call() {
  					boolean success = false;
  					StopWatch stopWatch = new StopWatch();
  					stopWatch.start();
  
  					RESULT_LOG.info("Thread " + Thread.currentThread().getName() + ": starting execution of script "
  							+ script.getName());
  
  					try {
  						success = scriptExecutor.executeScript(script, scriptProperties);
  					} catch (Throwable th) {
  						LOG.error(th.getMessage(), th);
  					} finally {
  
  						LOG.info("SCRIPT EXECUTION " + (success ? "SUCCESSFUL" : "FAILED") + " (" + script + ")");
  
  						RESULT_LOG.info("Thread " + Thread.currentThread().getName() + ": finished execution of script "
  								+ script.getName() + " (took "
  								+ stopWatch + " H:mm:ss.SSS)");
  					}
  					return success;
  				}
  			});
  		}
  
  		boolean overallResult = true;
  		for (int i = 0, size = scripts.size(); i < size; ++i) {
  			if (!completionService.take().get()) {
  				overallResult = false;
  			}
  		}
  
  		shutDownExecutorService(execService);
  
  		if (!overallResult) {
  			throw new JFunkExecutionException();
  		}
  	}
docs: Executes the jFunk test. A thread pool ({@link ExecutorService}) is created with the number
  of configured threads, which handles concurrent script execution.