diff --git a/src/main/java/teetime/framework/pipe/SpScPipe.java b/src/main/java/teetime/framework/pipe/SpScPipe.java index 3160d38b9ffc116ba9ce8bb1e3e3aaa4a4e5c295..bf28520d020e10bba4df712d9a895efa6e5726d2 100644 --- a/src/main/java/teetime/framework/pipe/SpScPipe.java +++ b/src/main/java/teetime/framework/pipe/SpScPipe.java @@ -18,6 +18,7 @@ package teetime.framework.pipe; import teetime.framework.AbstractInterThreadPipe; import teetime.framework.InputPort; import teetime.framework.OutputPort; +import teetime.framework.StageState; import teetime.util.concurrent.queue.ObservableSpScArrayQueue; public final class SpScPipe extends AbstractInterThreadPipe implements IMonitorablePipe { @@ -44,8 +45,11 @@ public final class SpScPipe extends AbstractInterThreadPipe implements IMonitora public boolean add(final Object element) { // BETTER introduce a QueueIsFullStrategy while (!this.queue.offer(element)) { - this.numWaits++; // Thread.yield(); + if (this.cachedTargetStage.getCurrentState() == StageState.TERMINATED) { + return false; + } + this.numWaits++; try { Thread.sleep(1); } catch (InterruptedException e) {