diff options
author | desperateCoder <echotodevnull@gmail.com> | 2022-06-19 18:03:34 +0300 |
---|---|---|
committer | desperateCoder <echotodevnull@gmail.com> | 2022-06-19 18:03:34 +0300 |
commit | 1bb9a76b256bfdca75505aee747444c2d9928ec9 (patch) | |
tree | a51bb874eacb3e4d19214b8759ae284e14818340 /app/src/main/java/it/niedermann/nextcloud/deck | |
parent | 8feb098510b8adf7799023d0ac1d24272b360445 (diff) |
centralized executorService, evaluate poolsize depending on available cpu cores
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck')
3 files changed, 27 insertions, 10 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/api/RequestHelper.java b/app/src/main/java/it/niedermann/nextcloud/deck/api/RequestHelper.java index 79790484a..7cd79ed45 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/api/RequestHelper.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/api/RequestHelper.java @@ -2,20 +2,16 @@ package it.niedermann.nextcloud.deck.api; import androidx.annotation.NonNull; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - import io.reactivex.Observable; import io.reactivex.disposables.Disposable; import io.reactivex.functions.Consumer; import io.reactivex.plugins.RxJavaPlugins; import io.reactivex.schedulers.Schedulers; import it.niedermann.nextcloud.deck.DeckLog; +import it.niedermann.nextcloud.deck.util.ExecutorServiceProvider; public class RequestHelper { - private static final ExecutorService executor = Executors.newCachedThreadPool(); - static { RxJavaPlugins.setErrorHandler(DeckLog::logError); } @@ -27,7 +23,7 @@ public class RequestHelper { final ResponseConsumer<T> cb = new ResponseConsumer<>(callback); return call.getObservableFromCall() - .subscribeOn(Schedulers.from(executor)) + .subscribeOn(Schedulers.from(ExecutorServiceProvider.getExecutorService())) .subscribe(cb, cb.getExceptionConsumer()); } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java index 9a96ae401..50de4d2e4 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java @@ -34,9 +34,6 @@ import java.util.Optional; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -91,6 +88,7 @@ import it.niedermann.nextcloud.deck.persistence.sync.helpers.providers.StackData import it.niedermann.nextcloud.deck.persistence.sync.helpers.providers.partial.BoardWithAclDownSyncDataProvider; import it.niedermann.nextcloud.deck.persistence.sync.helpers.providers.partial.BoardWithStacksAndLabelsUpSyncDataProvider; import it.niedermann.nextcloud.deck.ui.upcomingcards.UpcomingCardsAdapterItem; +import it.niedermann.nextcloud.deck.util.ExecutorServiceProvider; @SuppressWarnings("WeakerAccess") public class SyncManager { @@ -116,7 +114,7 @@ public class SyncManager { this(context, new DataBaseAdapter(context.getApplicationContext()), new ServerAdapter(context.getApplicationContext(), ssoAccountName), - new ThreadPoolExecutor(5, 5, 60L, TimeUnit.SECONDS, new LinkedBlockingQueue<>()), + ExecutorServiceProvider.getExecutorService(), SyncHelper::new); LastSyncUtil.init(context.getApplicationContext()); } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/util/ExecutorServiceProvider.java b/app/src/main/java/it/niedermann/nextcloud/deck/util/ExecutorServiceProvider.java new file mode 100644 index 000000000..a2a90d4e0 --- /dev/null +++ b/app/src/main/java/it/niedermann/nextcloud/deck/util/ExecutorServiceProvider.java @@ -0,0 +1,23 @@ +package it.niedermann.nextcloud.deck.util; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +public class ExecutorServiceProvider { + + private static final int NUMBER_OF_CORES = Runtime.getRuntime().availableProcessors(); + + private static final ExecutorService EXECUTOR = + new ThreadPoolExecutor(NUMBER_OF_CORES>>1, NUMBER_OF_CORES, + 60L, TimeUnit.SECONDS, new LinkedBlockingQueue<>()); + + private ExecutorServiceProvider() { + // hide Constructor + } + + public static ExecutorService getExecutorService() { + return EXECUTOR; + } +} |