diff --git a/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/handler/MiIoAbstractHandler.java b/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/handler/MiIoAbstractHandler.java index 93acefd1b46e..b97d68cd10d8 100644 --- a/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/handler/MiIoAbstractHandler.java +++ b/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/handler/MiIoAbstractHandler.java @@ -77,7 +77,9 @@ public abstract class MiIoAbstractHandler extends BaseThingHandler implements Mi protected static final Gson GSON = new GsonBuilder().create(); protected static final String TIMESTAMP = "timestamp"; - protected ScheduledExecutorService miIoScheduler = scheduler; + protected ScheduledExecutorService miIoScheduler = new ScheduledThreadPoolExecutor(3, + new NamedThreadFactory("binding-" + getThing().getUID().getAsString(), true)); + protected @Nullable ScheduledFuture pollingJob; protected MiIoDevices miDevice = MiIoDevices.UNKNOWN; protected boolean isIdentified; @@ -134,7 +136,7 @@ public void initialize() { getThing().getThingTypeUID()); ScheduledThreadPoolExecutor miIoScheduler = new ScheduledThreadPoolExecutor(3, - new NamedThreadFactory(getThing().getUID().getAsString(), true)); + new NamedThreadFactory("binding-" + getThing().getUID().getAsString(), true)); miIoScheduler.setExecuteExistingDelayedTasksAfterShutdownPolicy(false); miIoScheduler.setRemoveOnCancelPolicy(true); this.miIoScheduler = miIoScheduler; diff --git a/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/transport/MiIoAsyncCommunication.java b/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/transport/MiIoAsyncCommunication.java index 63a75a4d55dd..95be2fba35aa 100644 --- a/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/transport/MiIoAsyncCommunication.java +++ b/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/transport/MiIoAsyncCommunication.java @@ -249,7 +249,7 @@ MiIoSendCommand sendMiIoSendCommand(MiIoSendCommand miIoSendCommand) { public synchronized void startReceiver() { MessageSenderThread senderThread = this.senderThread; if (senderThread == null || !senderThread.isAlive()) { - senderThread = new MessageSenderThread(); + senderThread = new MessageSenderThread(deviceId); senderThread.start(); this.senderThread = senderThread; } @@ -261,14 +261,17 @@ public synchronized void startReceiver() { * */ private class MessageSenderThread extends Thread { - public MessageSenderThread() { - super("Mi IO MessageSenderThread"); + private final String deviceId; + + public MessageSenderThread(String deviceId) { + super("OH-binding-miio-MessageSenderThread-" + deviceId); setDaemon(true); + this.deviceId = deviceId; } @Override public void run() { - logger.debug("Starting Mi IO MessageSenderThread"); + logger.debug("Starting Mi IO MessageSenderThread {}", deviceId); while (!interrupted()) { try { if (concurrentLinkedQueue.isEmpty()) { @@ -291,11 +294,11 @@ public void run() { // That's our signal to stop break; } catch (Exception e) { - logger.warn("Error while polling/sending message", e); + logger.warn("Error while polling/sending message for {}", deviceId, e); } } closeSocket(); - logger.debug("Finished Mi IO MessageSenderThread"); + logger.debug("Finished Mi IO MessageSenderThread {}", deviceId); } }