From a302e1daa4f8e33e672c6da0899ceb32847aa915 Mon Sep 17 00:00:00 2001
From: Christian Wulf <chw@informatik.uni-kiel.de>
Date: Thu, 30 Jul 2015 17:36:59 +0200
Subject: [PATCH] added inc(counter) to SignalingCounter

---
 src/main/java/teetime/framework/DynamicActuator.java         | 4 ++++
 src/main/java/teetime/framework/ThreadService.java           | 3 ++-
 .../teetime/util/framework/concurrent/SignalingCounter.java  | 5 +++++
 3 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/main/java/teetime/framework/DynamicActuator.java b/src/main/java/teetime/framework/DynamicActuator.java
index acc8e990..a50814d2 100644
--- a/src/main/java/teetime/framework/DynamicActuator.java
+++ b/src/main/java/teetime/framework/DynamicActuator.java
@@ -31,6 +31,10 @@ public class DynamicActuator {
 	public Runnable startWithinNewThread(final Stage stage) {
 		Runnable runnable = wrap(stage);
 		Thread thread = new Thread(runnable);
+
+		stage.setOwningThread(thread);
+		stage.setExceptionHandler(null);
+
 		thread.start();
 		return runnable;
 	}
diff --git a/src/main/java/teetime/framework/ThreadService.java b/src/main/java/teetime/framework/ThreadService.java
index c703d68c..913d15bb 100644
--- a/src/main/java/teetime/framework/ThreadService.java
+++ b/src/main/java/teetime/framework/ThreadService.java
@@ -206,7 +206,8 @@ class ThreadService extends AbstractService<ThreadService> {
 
 	@Override
 	void merge(final ThreadService source) {
-		this.getThreadableStages().putAll(source.getThreadableStages());
+		threadableStages.putAll(source.getThreadableStages());
+		runnableCounter.inc(source.runnableCounter);
 	}
 
 	SignalingCounter getRunnableCounter() {
diff --git a/src/main/java/teetime/util/framework/concurrent/SignalingCounter.java b/src/main/java/teetime/util/framework/concurrent/SignalingCounter.java
index 31a9775d..64deae6a 100644
--- a/src/main/java/teetime/util/framework/concurrent/SignalingCounter.java
+++ b/src/main/java/teetime/util/framework/concurrent/SignalingCounter.java
@@ -60,4 +60,9 @@ public class SignalingCounter {
 			}
 		}
 	}
+
+	public synchronized void inc(final SignalingCounter otherCounter) {
+		counter += otherCounter.counter;
+		conditionalNotifyAll(counter);
+	}
 }
-- 
GitLab