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