From 3e675ca2e52f3643765711ee962c74ee1a1b4219 Mon Sep 17 00:00:00 2001 From: Marius Bogoevici Date: Thu, 25 Sep 2008 04:56:26 +0000 Subject: [PATCH] Solves a race condition between start() on the class and run() on the internal SchedulerTask. --- .../integration/scheduling/SimpleTaskScheduler.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/scheduling/SimpleTaskScheduler.java b/org.springframework.integration/src/main/java/org/springframework/integration/scheduling/SimpleTaskScheduler.java index 2f45916e12..1425f19876 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/scheduling/SimpleTaskScheduler.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/scheduling/SimpleTaskScheduler.java @@ -104,8 +104,8 @@ public class SimpleTaskScheduler implements TaskScheduler { if (this.running) { return; } - this.executor.execute(this.schedulerTask); this.running = true; + this.executor.execute(this.schedulerTask); } finally { this.lifecycleLock.unlock(); @@ -119,7 +119,7 @@ public class SimpleTaskScheduler implements TaskScheduler { return; } this.running = false; - Thread executingThread = this.schedulerTask.executingThread.getAndSet(null); + Thread executingThread = this.schedulerTask.executingThread.get(); if (executingThread != null) { executingThread.interrupt(); } @@ -165,6 +165,7 @@ public class SimpleTaskScheduler implements TaskScheduler { break; } } + this.executingThread.set(null); } }