From 310c189478cb3ae14a3aa70b7cf33b84b64815e1 Mon Sep 17 00:00:00 2001
From: Christian Wulf <chw@informatik.uni-kiel.de>
Date: Thu, 6 Aug 2015 14:00:48 +0200
Subject: [PATCH] fixes #216

---
 .../java/teetime/framework/ThreadService.java    | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/main/java/teetime/framework/ThreadService.java b/src/main/java/teetime/framework/ThreadService.java
index 3197606e..3e27f69b 100644
--- a/src/main/java/teetime/framework/ThreadService.java
+++ b/src/main/java/teetime/framework/ThreadService.java
@@ -137,8 +137,10 @@ class ThreadService extends AbstractService<ThreadService> {
 	}
 
 	private void sendStartingSignal(final Set<Stage> newThreadableStages) {
-		for (Stage stage : newThreadableStages) {
-			((TeeTimeThread) stage.getOwningThread()).sendStartingSignal();
+		synchronized (newThreadableStages) {
+			for (Stage stage : newThreadableStages) {
+				((TeeTimeThread) stage.getOwningThread()).sendStartingSignal();
+			}
 		}
 	}
 
@@ -149,8 +151,14 @@ class ThreadService extends AbstractService<ThreadService> {
 
 	@Override
 	void onTerminate() {
-		for (Stage stage : threadableStages) {
-			stage.terminate();
+		abortStages(threadableStages);
+	}
+
+	private void abortStages(final Set<Stage> currentTreadableStages) {
+		synchronized (currentTreadableStages) {
+			for (Stage stage : currentTreadableStages) {
+				stage.terminate();
+			}
 		}
 	}
 
-- 
GitLab