From 8ffe2a7aeac2fa045babe697e8cc241581b59c5e Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 28 Dec 2022 08:48:10 +0100 Subject: [PATCH] Core pool size --- .../java/eu/faircode/email/AdapterMessage.java | 2 +- app/src/main/java/eu/faircode/email/Helper.java | 16 ++++++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index 48aba69e7e..248df44dec 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -7811,7 +7811,7 @@ public class AdapterMessage extends RecyclerView.Adapter config = new AsyncDifferConfig.Builder<>(callback) - .setBackgroundThreadExecutor(Helper.getBackgroundExecutor(2, "differ")) + .setBackgroundThreadExecutor(Helper.getBackgroundExecutor(0, 2, 3, "differ")) .build(); this.differ = new AsyncPagedListDiffer<>(new AdapterListUpdateCallback(this), config); this.differ.addPagedListListener(new AsyncPagedListDiffer.PagedListListener() { diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index 5d670832eb..dbdf7d9a2b 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -281,6 +281,10 @@ public class Helper { } static ExecutorService getBackgroundExecutor(int threads, final String name) { + return getBackgroundExecutor(threads, threads, 0, name); + } + + static ExecutorService getBackgroundExecutor(int min, int max, int keepalive, final String name) { ThreadFactory factory = new ThreadFactory() { private final AtomicInteger threadId = new AtomicInteger(); @@ -293,7 +297,7 @@ public class Helper { } }; - if (threads == 0) { + if (max == 0) { // java.lang.OutOfMemoryError: pthread_create (1040KB stack) failed: Try again // 1040 KB native stack size / 32 KB thread stack size ~ 32 threads int processors = Runtime.getRuntime().availableProcessors(); // Modern devices: 8 @@ -304,11 +308,11 @@ public class Helper { 3L, TimeUnit.SECONDS, new LinkedBlockingQueue(), factory); - } else if (threads == 1) + } else if (max == 1) return new ThreadPoolExecutorEx( name, - threads, threads, - 0L, TimeUnit.MILLISECONDS, + min, max, + keepalive, TimeUnit.SECONDS, new PriorityBlockingQueue(10, new PriorityComparator()), factory) { private final AtomicLong sequenceId = new AtomicLong(); @@ -327,8 +331,8 @@ public class Helper { else return new ThreadPoolExecutorEx( name, - threads, threads, - 0L, TimeUnit.MILLISECONDS, + min, max, + keepalive, TimeUnit.SECONDS, new LinkedBlockingQueue(), factory); }