Join all threads before end of main

Some calls from separate threads may throw exceptions once the main()
method has returned.
This commit is contained in:
Romain Vimont 2023-02-07 22:58:46 +01:00
parent 730eb1086a
commit 400a1c69b1
3 changed files with 22 additions and 2 deletions

View file

@ -100,11 +100,17 @@ public class Controller {
public void stop() {
if (thread != null) {
thread.interrupt();
thread = null;
}
sender.stop();
}
public void join() throws InterruptedException {
if (thread != null) {
thread.join();
}
sender.join();
}
public DeviceMessageSender getSender() {
return sender;
}

View file

@ -66,7 +66,12 @@ public final class DeviceMessageSender {
public void stop() {
if (thread != null) {
thread.interrupt();
thread = null;
}
}
public void join() throws InterruptedException {
if (thread != null) {
thread.join();
}
}
}

View file

@ -117,6 +117,15 @@ public final class Server {
if (controller != null) {
controller.stop();
}
try {
initThread.join();
if (controller != null) {
controller.join();
}
} catch (InterruptedException e) {
// ignore
}
}
}
}