[miele] Use dedicated thread for event listening (#9536)

Signed-off-by: Kai Kreuzer <kai@openhab.org>
This commit is contained in:
Kai Kreuzer 2020-12-27 10:15:04 +01:00 committed by GitHub
parent 0874df702c
commit d025f8a35b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 12 additions and 2 deletions

View 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;
}
}
}