From d025f8a35b10298372f94918bcf57cb8d2780730 Mon Sep 17 00:00:00 2001 From: Kai Kreuzer Date: Sun, 27 Dec 2020 10:15:04 +0100 Subject: [PATCH] [miele] Use dedicated thread for event listening (#9536) Signed-off-by: Kai Kreuzer --- .../miele/internal/handler/MieleBridgeHandler.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/MieleBridgeHandler.java b/bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/MieleBridgeHandler.java index 76a4971675..e2bf20153e 100644 --- a/bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/MieleBridgeHandler.java +++ b/bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/MieleBridgeHandler.java @@ -36,12 +36,16 @@ import java.util.Map; import java.util.Random; import java.util.Set; import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; import java.util.regex.Pattern; import java.util.zip.GZIPInputStream; import org.apache.commons.lang.StringUtils; +import org.openhab.core.common.NamedThreadFactory; import org.openhab.core.thing.Bridge; import org.openhab.core.thing.ChannelUID; import org.openhab.core.thing.Thing; @@ -88,7 +92,8 @@ public class MieleBridgeHandler extends BaseBridgeHandler { protected List applianceStatusListeners = new CopyOnWriteArrayList<>(); protected ScheduledFuture pollingJob; - protected ScheduledFuture eventListenerJob; + protected ExecutorService executor; + protected Future eventListenerJob; protected List previousHomeDevices = new CopyOnWriteArrayList<>(); @@ -572,7 +577,8 @@ public class MieleBridgeHandler extends BaseBridgeHandler { logger.debug("Scheduling the Miele event listener job"); if (eventListenerJob == null || eventListenerJob.isCancelled()) { - eventListenerJob = scheduler.schedule(eventListenerRunnable, 0, TimeUnit.SECONDS); + executor = Executors.newSingleThreadExecutor(new NamedThreadFactory("binding-miele")); + eventListenerJob = executor.submit(eventListenerRunnable); } } @@ -642,5 +648,9 @@ public class MieleBridgeHandler extends BaseBridgeHandler { eventListenerJob.cancel(true); eventListenerJob = null; } + if (executor != null) { + executor.shutdownNow(); + executor = null; + } } } -- 2.47.3