[miio] Avoid shutting down shared executor service (#11166)
* [miio] Avoid shutting down shared executor service * Closing #11152 * Better identify communication threads Signed-off-by: Marcel Verpaalen <marcel@verpaalen.com>
This commit is contained in:
parent
0a96792a93
commit
31cde42da5
|
@ -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 abstract class MiIoAbstractHandler extends BaseThingHandler implements Mi
|
|||
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;
|
||||
|
|
|
@ -249,7 +249,7 @@ public class MiIoAsyncCommunication {
|
|||
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 class MiIoAsyncCommunication {
|
|||
*
|
||||
*/
|
||||
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 class MiIoAsyncCommunication {
|
|||
// 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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue