From 55773a4713d91ec05c99b2376ee146cc78c03e4c Mon Sep 17 00:00:00 2001 From: lionarius Date: Mon, 23 Sep 2024 17:58:47 +0300 Subject: [PATCH] better exit --- src/main/java/ru/lionarius/Main.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/main/java/ru/lionarius/Main.java b/src/main/java/ru/lionarius/Main.java index 929cd58..ac465f2 100644 --- a/src/main/java/ru/lionarius/Main.java +++ b/src/main/java/ru/lionarius/Main.java @@ -6,6 +6,11 @@ import java.util.Scanner; import java.util.function.Function; public class Main { + /** + * Flag to indicate whether the application is running or not. + */ + private static boolean isRunning = true; + /** * Counter to assign unique IDs to each calculation thread. */ @@ -23,7 +28,7 @@ public class Main { var scanner = new Scanner(System.in); - while (true) { + while (isRunning) { System.out.println("Enter desired command (start , stop , await , exit):"); var input = scanner.nextLine().trim(); var command = input.split(" "); @@ -129,6 +134,14 @@ public class Main { private static void handleExitCommand() { System.out.println("Shutting down..."); threads.values().forEach(CalculationThread::interrupt); - System.exit(0); + + for (var thread : threads.values()) { + try { + thread.join(); + } catch (InterruptedException ignored) { + } + } + + isRunning = false; } }