package holeg; import holeg.model.Grid; import holeg.power_flow.PowerFlowProblem; import holeg.power_flow.SolverResult; import java.util.ArrayList; import java.util.List; public class HolegPowerFlowContext { public final Object lock = new Object(); public List lastSolvedGrids = new ArrayList<>(); public Thread solverJob; public float solverTimeMilliseconds; public Grid showGridForVisual; public PowerFlowProblem problem; public SolverResult result; public void clearCache() { synchronized (lock) { lastSolvedGrids.clear(); } } public boolean isSolving() { synchronized (lock) { return solverJob != null && solverJob.isAlive(); } } public void stopSolver() { synchronized (lock) { if (solverJob != null) { try { solverJob.interrupt(); // wait till old solver job has finished or is interrupted solverJob.join(100); } catch (InterruptedException ignored) { } solverJob = null; } } } }