From: Kai Kreuzer Date: Thu, 3 Dec 2020 16:19:10 +0000 (+0100) Subject: [avmfritz] Properly interrupt monitor thread upon dispose (#9201) X-Git-Url: https://git.basschouten.com/?a=commitdiff_plain;h=a736e64402ef60d5a20cbe7ae51c741bcd3faa50;p=openhab-addons.git [avmfritz] Properly interrupt monitor thread upon dispose (#9201) * Properly interrupt monitor thread upon dispose Signed-off-by: Kai Kreuzer --- diff --git a/bundles/org.openhab.binding.avmfritz/src/main/java/org/openhab/binding/avmfritz/internal/callmonitor/CallMonitor.java b/bundles/org.openhab.binding.avmfritz/src/main/java/org/openhab/binding/avmfritz/internal/callmonitor/CallMonitor.java index 55707339f1..6905c9aa49 100644 --- a/bundles/org.openhab.binding.avmfritz/src/main/java/org/openhab/binding/avmfritz/internal/callmonitor/CallMonitor.java +++ b/bundles/org.openhab.binding.avmfritz/src/main/java/org/openhab/binding/avmfritz/internal/callmonitor/CallMonitor.java @@ -75,6 +75,10 @@ public class CallMonitor { */ public void dispose() { reconnectJob.cancel(true); + CallMonitorThread monitorThread = this.monitorThread; + if (monitorThread != null) { + monitorThread.interrupt(); + } } public class CallMonitorThread extends Thread { @@ -120,11 +124,13 @@ public class CallMonitor { handler.setStatusInfo(ThingStatus.ONLINE, ThingStatusDetail.NONE, null); while (!interrupted) { try { - String line = reader.readLine(); - if (line != null) { - logger.debug("Received raw call string from fbox: {}", line); - CallEvent ce = new CallEvent(line); - handleCallEvent(ce); + if (reader.ready()) { + String line = reader.readLine(); + if (line != null) { + logger.debug("Received raw call string from fbox: {}", line); + CallEvent ce = new CallEvent(line); + handleCallEvent(ce); + } } } catch (IOException e) { if (interrupted) { @@ -136,8 +142,9 @@ public class CallMonitor { break; } finally { try { - sleep(1000L); + sleep(500L); } catch (InterruptedException e) { + interrupted = true; } } }