Join all threads before end of main

Some calls run from separate threads may throw exceptions when the
main() method has returned.
This commit is contained in:
Romain Vimont 2023-02-07 22:58:46 +01:00
parent 6524e90c68
commit 4f986d4bbb
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
}
}
}
}