Shutdown ExecutorService during CLientUI shutdown

This commit is contained in:
swazrgb
2020-06-11 05:03:58 +02:00
parent b22400454d
commit 9d9f7ff18b

View File

@@ -51,6 +51,8 @@ import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.time.Duration; import java.time.Duration;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.TimeUnit;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Provider; import javax.inject.Provider;
@@ -134,6 +136,7 @@ public class ClientUI
private final MouseManager mouseManager; private final MouseManager mouseManager;
private final Applet client; private final Applet client;
private final ConfigManager configManager; private final ConfigManager configManager;
private final ExecutorService executorService;
private final Provider<ClientThread> clientThreadProvider; private final Provider<ClientThread> clientThreadProvider;
private final EventBus eventBus; private final EventBus eventBus;
private final CardLayout cardLayout = new CardLayout(); private final CardLayout cardLayout = new CardLayout();
@@ -161,6 +164,7 @@ public class ClientUI
MouseManager mouseManager, MouseManager mouseManager,
@Nullable Applet client, @Nullable Applet client,
ConfigManager configManager, ConfigManager configManager,
ExecutorService executorService,
Provider<ClientThread> clientThreadProvider, Provider<ClientThread> clientThreadProvider,
EventBus eventbus) EventBus eventbus)
{ {
@@ -169,6 +173,7 @@ public class ClientUI
this.mouseManager = mouseManager; this.mouseManager = mouseManager;
this.client = client; this.client = client;
this.configManager = configManager; this.configManager = configManager;
this.executorService = executorService;
this.clientThreadProvider = clientThreadProvider; this.clientThreadProvider = clientThreadProvider;
this.eventBus = eventbus; this.eventBus = eventbus;
@@ -601,9 +606,21 @@ public class ClientUI
saveClientBoundsConfig(); saveClientBoundsConfig();
ClientShutdown csev = new ClientShutdown(); ClientShutdown csev = new ClientShutdown();
eventBus.post(ClientShutdown.class, csev); eventBus.post(ClientShutdown.class, csev);
executorService.shutdown();
new Thread(() -> new Thread(() ->
{ {
csev.waitForAllConsumers(Duration.ofSeconds(10)); csev.waitForAllConsumers(Duration.ofSeconds(10));
try
{
if (!executorService.awaitTermination(5, TimeUnit.SECONDS))
{
executorService.shutdownNow();
}
}
catch (InterruptedException ignored)
{
}
if (client != null) if (client != null)
{ {