]> git.basschouten.com Git - openhab-addons.git/commitdiff
[miele] Use dedicated thread for event listening (#9536)
authorKai Kreuzer <kai@openhab.org>
Sun, 27 Dec 2020 09:15:04 +0000 (10:15 +0100)
committerGitHub <noreply@github.com>
Sun, 27 Dec 2020 09:15:04 +0000 (10:15 +0100)
Signed-off-by: Kai Kreuzer <kai@openhab.org>
bundles/org.openhab.binding.miele/src/main/java/org/openhab/binding/miele/internal/handler/MieleBridgeHandler.java

index 76a4971675e881bf0623fca9a95103a1b1d55010..e2bf20153e3a27c4a4f9b63d6c82880518cb5c12 100644 (file)
@@ -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<ApplianceStatusListener> applianceStatusListeners = new CopyOnWriteArrayList<>();
     protected ScheduledFuture<?> pollingJob;
-    protected ScheduledFuture<?> eventListenerJob;
+    protected ExecutorService executor;
+    protected Future<?> eventListenerJob;
 
     protected List<HomeDevice> 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;
+        }
     }
 }