From: Kai Kreuzer Date: Sun, 27 Dec 2020 09:15:04 +0000 (+0100) Subject: [miele] Use dedicated thread for event listening (#9536) X-Git-Url: https://git.basschouten.com/?a=commitdiff_plain;h=d025f8a35b10298372f94918bcf57cb8d2780730;p=openhab-addons.git [miele] Use dedicated thread for event listening (#9536) Signed-off-by: Kai Kreuzer --- 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; + } } }