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