From ac90cd02ae723e6601aab9a10ed290f41c435a50 Mon Sep 17 00:00:00 2001 From: Blizzard Finnegan Date: Tue, 21 Mar 2023 08:54:35 -0400 Subject: [PATCH] Multithreading hotfix Write thread was prematurely exiting in previous build --- src/main/java/org/baxter/disco/ocr/Cli.java | 23 ++++++++++----------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/main/java/org/baxter/disco/ocr/Cli.java b/src/main/java/org/baxter/disco/ocr/Cli.java index 29941b0..c90a350 100644 --- a/src/main/java/org/baxter/disco/ocr/Cli.java +++ b/src/main/java/org/baxter/disco/ocr/Cli.java @@ -31,8 +31,6 @@ public class Cli */ private static int iterationCount = 10; - private static boolean endOfCycles = false; - /** * Scanner used for monitoring user input. * This is a global object, so that functions @@ -135,7 +133,6 @@ public class Cli setActiveCameras(); break; case 5: - endOfCycles = false; if(!camerasConfigured) { prompt("You have not configured the cameras yet! Are you sure you would like to continue? (y/N): "); @@ -652,22 +649,22 @@ public class Cli final LinkedBlockingQueue dataEntryQueue = new LinkedBlockingQueue<>(); Thread writeThread = new Thread( () -> { - while(dataEntryQueue.size() > 0 && !endOfCycles) + ErrorLogging.logError("DEBUG: Starting write thread..."); + while(true) { Cycle cycle = null; - do - { - try{ cycle = dataEntryQueue.poll(Long.MAX_VALUE,TimeUnit.SECONDS); } - catch(Exception e){ ErrorLogging.logError(e); } - } - while(cycle == null); + try{ cycle = dataEntryQueue.take(); } + catch(Exception e){ ErrorLogging.logError(e); } + + if(cycle.getcycleNumber() == -1) break; DataSaving.writeValues(cycle,serials); } + ErrorLogging.logError("DEBUG: Exiting write thread."); }); - writeThread.start(); + //writeThread.start(); for(int i = 0; i < localIterations; i++) { @@ -724,8 +721,10 @@ public class Cli } while(fail); dataEntryQueue.add(cycle); + if(!writeThread.isAlive()) + writeThread.start(); } - endOfCycles = true; + dataEntryQueue.add(new Cycle(-1)); println("======================================="); println("Testing complete!"); } -- 2.47.2