private void runTask() {
        // Got our permit, so run the task
        final Runnable task = runnableSupplier.get();
        if (task != null) {
            LOGGER.debug("Running task");
            try {
                task.run();
            } catch (UncheckedInterruptedException e) {
                // Swallow the exception to keep this thread running
                LOGGER.debug("Parallel executor interrupted: '{}' task: {}",
                        threadNamePrefix, LogUtil.exceptionMessage(e), e);
            } catch (Exception e) {
                // Swallow the exception to keep this thread running
                LOGGER.error("Error running parallel executor '{}' task: {}",
                        threadNamePrefix, LogUtil.exceptionMessage(e), e);
            }
        } else {
            LOGGER.warn("Null task on parallel executor '{}'", threadNamePrefix);
        }
    }
If true, pause the executor's threads after they have completed their current task.
if false, resume all the executor's threads.
If already in the desired state, is a noop.
stroom-proxy/stroom-proxy-repo/src/main/java/stroom/proxy/repo/ParallelExecutor.java