From 76a9cb9a06bd73cc1539a2942b7ef8a665f1a4bf Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Thu, 12 Jul 2018 14:53:27 +0200 Subject: [PATCH] using different threadpools for normal ExecutorService (will spawn threads on demand) and ScheduledExecutorService (limited to 4 scheduler threads) --- .../main/java/org/cryptomator/ui/UiModule.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/main/ui/src/main/java/org/cryptomator/ui/UiModule.java b/main/ui/src/main/java/org/cryptomator/ui/UiModule.java index ce18b9855..8b94936b0 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/UiModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/UiModule.java @@ -34,7 +34,7 @@ import org.fxmisc.easybind.EasyBind; @Module(includes = {ViewControllerModule.class, CommonsModule.class, KeychainModule.class}, subcomponents = {VaultComponent.class}) public class UiModule { - private static final int NUM_BACKGROUND_THREADS = 4; + private static final int NUM_SCHEDULER_THREADS = 4; @Provides @Singleton @@ -46,9 +46,9 @@ public class UiModule { @Singleton ScheduledExecutorService provideScheduledExecutorService(@Named("shutdownTaskScheduler") Consumer shutdownTaskScheduler) { final AtomicInteger threadNumber = new AtomicInteger(1); - ScheduledExecutorService executorService = Executors.newScheduledThreadPool(NUM_BACKGROUND_THREADS, r -> { + ScheduledExecutorService executorService = Executors.newScheduledThreadPool(NUM_SCHEDULER_THREADS, r -> { Thread t = new Thread(r); - t.setName("Background Thread " + threadNumber.getAndIncrement()); + t.setName("Scheduler Thread " + threadNumber.getAndIncrement()); t.setDaemon(true); return t; }); @@ -58,8 +58,16 @@ public class UiModule { @Provides @Singleton - ExecutorService provideExecutorService(ScheduledExecutorService executorService) { - return executorService; // alias + ExecutorService provideExecutorService(@Named("shutdownTaskScheduler") Consumer shutdownTaskScheduler) { + final AtomicInteger threadNumber = new AtomicInteger(1); + ExecutorService executorService = Executors.newCachedThreadPool(r -> { + Thread t = new Thread(r); + t.setName("Background Thread " + threadNumber.getAndIncrement()); + t.setDaemon(true); + return t; + }); + shutdownTaskScheduler.accept(executorService::shutdown); + return executorService; } @Provides