diff --git a/common/src/main/java/bisq/common/util/Utilities.java b/common/src/main/java/bisq/common/util/Utilities.java index 1c47d144b7..c6d7f3ea97 100644 --- a/common/src/main/java/bisq/common/util/Utilities.java +++ b/common/src/main/java/bisq/common/util/Utilities.java @@ -89,14 +89,27 @@ public class Utilities { return getSingleThreadExecutor(name); } + public static ExecutorService getNonDaemonSingleThreadExecutor(Class aClass) { + String name = aClass.getSimpleName(); + return getSingleThreadExecutor(name, false); + } + public static ExecutorService getSingleThreadExecutor(String name) { - final ThreadFactory threadFactory = new ThreadFactoryBuilder() - .setNameFormat(name) - .setDaemon(true) - .build(); + return getSingleThreadExecutor(name, true); + } + + private static ExecutorService getSingleThreadExecutor(String name, boolean isDaemonThread) { + final ThreadFactory threadFactory = getThreadFactory(name, isDaemonThread); return Executors.newSingleThreadExecutor(threadFactory); } + private static ThreadFactory getThreadFactory(String name, boolean isDaemonThread) { + return new ThreadFactoryBuilder() + .setNameFormat(name) + .setDaemon(isDaemonThread) + .build(); + } + public static ExecutorService getSingleThreadExecutor(ThreadFactory threadFactory) { return Executors.newSingleThreadExecutor(threadFactory); } diff --git a/core/src/main/java/bisq/core/dao/state/storage/DaoStateStorageService.java b/core/src/main/java/bisq/core/dao/state/storage/DaoStateStorageService.java index 3d46b2609f..b3419418af 100644 --- a/core/src/main/java/bisq/core/dao/state/storage/DaoStateStorageService.java +++ b/core/src/main/java/bisq/core/dao/state/storage/DaoStateStorageService.java @@ -34,8 +34,6 @@ import bisq.common.util.Utilities; import javax.inject.Inject; import javax.inject.Named; -import com.google.common.util.concurrent.MoreExecutors; - import java.io.File; import java.io.IOException; @@ -44,7 +42,6 @@ import java.util.List; import java.util.Optional; import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; -import java.util.concurrent.TimeUnit; import lombok.extern.slf4j.Slf4j; @@ -58,7 +55,7 @@ public class DaoStateStorageService extends StoreService { private final BsqBlocksStorageService bsqBlocksStorageService; private final File storageDir; private final LinkedList blocks = new LinkedList<>(); - private final ExecutorService executorService = Utilities.getSingleThreadExecutor(this.getClass()); + private final ExecutorService executorService = Utilities.getNonDaemonSingleThreadExecutor(this.getClass()); private Optional> future = Optional.empty(); @@ -128,8 +125,7 @@ public class DaoStateStorageService extends StoreService { } public void shutDown() { - // noinspection UnstableApiUsage - MoreExecutors.shutdownAndAwaitTermination(executorService, 10, TimeUnit.SECONDS); + executorService.shutdown(); } @Override