X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.simulator.toolkit%2Fsrc%2Forg%2Fsimantics%2Fsimulator%2Ftoolkit%2FDynamicExperimentThread.java;h=9ee57f51055aec994a49d33f08726fec5a21c9ca;hb=b825d7a7aff95002f355878ec2767352411b5a43;hp=66cec38a46b62664c0a5037af4d24060378730b2;hpb=14a4f7a9d486fba5be815e511fb2a497fca4eb70;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.simulator.toolkit/src/org/simantics/simulator/toolkit/DynamicExperimentThread.java b/bundles/org.simantics.simulator.toolkit/src/org/simantics/simulator/toolkit/DynamicExperimentThread.java index 66cec38a4..9ee57f510 100644 --- a/bundles/org.simantics.simulator.toolkit/src/org/simantics/simulator/toolkit/DynamicExperimentThread.java +++ b/bundles/org.simantics.simulator.toolkit/src/org/simantics/simulator/toolkit/DynamicExperimentThread.java @@ -125,7 +125,7 @@ abstract public class DynamicExperimentThread extends Thread { runTasks(); taskTime += System.nanoTime() - asd2; - System.err.println(" st = " + 1e-9*stepTime + " tt = " + 1e-9*taskTime); + //System.err.println(" st = " + 1e-9*stepTime + " tt = " + 1e-9*taskTime); while(obtainedRealtimeRatio > desiredRealtimeRatio) { int ran = runTasks(); @@ -138,10 +138,12 @@ abstract public class DynamicExperimentThread extends Thread { if(deltaNs > 0) { synchronized(tasks) { - try { - tasks.wait(deltaMs, deltaNsRem); - } catch (InterruptedException e) { - e.printStackTrace(); + if (inState(StandardExperimentStates.Running.class)) { + try { + tasks.wait(deltaMs, deltaNsRem); + } catch (InterruptedException e) { + LOGGER.warn("Dynamic experiment thread '" + this.getName() + "' (" + this.getClass().getName() + ") interrupted", e); + } } } } @@ -151,15 +153,14 @@ abstract public class DynamicExperimentThread extends Thread { } else { - while(!inState(StandardExperimentStates.Running.class) && inActiveState()) { - - synchronized(tasks) { + synchronized(tasks) { + while(!inState(StandardExperimentStates.Running.class) && inActiveState()) { int ran = runTasks(); if(ran == 0) { try { tasks.wait(Integer.MAX_VALUE); } catch (InterruptedException e) { - e.printStackTrace(); + LOGGER.warn("Dynamic experiment thread '" + this.getName() + "' (" + this.getClass().getName() + ") interrupted", e); } } }