// for (Thread thread : this.infiniteProducerThreads) {
// thread.interrupt();
// }
//
// if (!exceptions.isEmpty()) {
// throw new ExecutionException(exceptions);
// }
// }
//
// // TODO: implement
// private void abortEventually() {
// for (Stage stage : configuration.getContext().getThreadableStages().keySet()) {
// stage.terminate();
// }
// waitForTermination();
// }
//
// /**
// * This method will start this execution and block until it is finished.
// *
// * @throws ExecutionException
// * if at least one exception in one thread has occurred within the execution. The exception contains the pairs of thread and throwable.
// *
// * @since 2.0
// */
// public void executeBlocking() {
// executeNonBlocking();
// waitForTermination();
// }
//
// /**
// * This method starts this execution without waiting for its termination. The method {@link #waitForTermination()} must be called to unsure a correct