From d00b2697861f13ec79c51bdb7e0f674989383c9a Mon Sep 17 00:00:00 2001 From: huanghongxun Date: Tue, 31 Mar 2020 21:54:00 +0800 Subject: [PATCH] fix: not shutting down executor service after game launched. --- .../src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java | 4 +++- .../java/org/jackhuang/hmcl/task/CancellableTaskExecutor.java | 2 ++ .../src/main/java/org/jackhuang/hmcl/task/Schedulers.java | 4 ++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java b/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java index e51a6e1dc..9cd32c1eb 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java @@ -507,12 +507,14 @@ public final class LauncherHelper { }); break; case HIDE: + launchingLatch.countDown(); Platform.runLater(() -> { // If application was stopped and execution services did not finish termination, // these codes will be executed. if (Controllers.getStage() != null) { Controllers.getStage().close(); - launchingLatch.countDown(); + Controllers.shutdown(); + Schedulers.shutdown(); } }); break; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/CancellableTaskExecutor.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/CancellableTaskExecutor.java index d64c89362..c505a1ff9 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/CancellableTaskExecutor.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/CancellableTaskExecutor.java @@ -288,12 +288,14 @@ public class CancellableTaskExecutor extends TaskExecutor { @Override public void run() { + String oldName = Thread.currentThread().getName(); try { if (task.getName() != null) Thread.currentThread().setName(task.getName()); if (!executeTask(parentTask, task)) success.set(false); } finally { + Thread.currentThread().setName(oldName); latch.countDown(); } } diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/Schedulers.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/Schedulers.java index 4975b54c3..b1bd28c76 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/Schedulers.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/Schedulers.java @@ -74,10 +74,10 @@ public final class Schedulers { Logging.LOG.info("Shutting down executor services."); if (CACHED_EXECUTOR != null) - CACHED_EXECUTOR.shutdownNow(); + CACHED_EXECUTOR.shutdown(); if (IO_EXECUTOR != null) - IO_EXECUTOR.shutdownNow(); + IO_EXECUTOR.shutdown(); } public static Future schedule(Executor executor, Runnable command) {