diff --git a/app/src/main/java/eu/faircode/email/ActivityMain.java b/app/src/main/java/eu/faircode/email/ActivityMain.java index 3fa144f317..def1fd1650 100644 --- a/app/src/main/java/eu/faircode/email/ActivityMain.java +++ b/app/src/main/java/eu/faircode/email/ActivityMain.java @@ -51,7 +51,7 @@ public class ActivityMain extends ActivityBase implements FragmentManager.OnBack private static final long IGNORE_STORAGE_SPACE = 24 * 60 * 60 * 1000L; // milliseconds private static final ExecutorService executor = - Helper.getBackgroundExecutor(0, 1, 3, "main"); + Helper.getBackgroundExecutor(1, "main"); @Override protected void onCreate(Bundle savedInstanceState) { diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index f8a6945290..dede7b83c8 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -337,9 +337,9 @@ public class AdapterMessage extends RecyclerView.Adapter(), factory); - } else if (max == 1) + } else if (threads == 1) return new ThreadPoolExecutorEx( name, - min, max, - keepalive, TimeUnit.SECONDS, + threads, threads, + 3, TimeUnit.SECONDS, new PriorityBlockingQueue(10, new PriorityComparator()), factory) { private final AtomicLong sequenceId = new AtomicLong(); @@ -358,8 +355,8 @@ public class Helper { else return new ThreadPoolExecutorEx( name, - min, max, - keepalive, TimeUnit.SECONDS, + threads, threads, + 3, TimeUnit.SECONDS, new LinkedBlockingQueue(), factory); } @@ -374,6 +371,8 @@ public class Helper { BlockingQueue workQueue, ThreadFactory threadFactory) { super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, threadFactory); + if (keepAliveTime != 0) + allowCoreThreadTimeOut(true); this.name = name; } diff --git a/app/src/main/java/eu/faircode/email/ServiceSend.java b/app/src/main/java/eu/faircode/email/ServiceSend.java index 661c81246c..3551ec7d84 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSend.java +++ b/app/src/main/java/eu/faircode/email/ServiceSend.java @@ -85,7 +85,7 @@ public class ServiceSend extends ServiceBase implements SharedPreferences.OnShar private List handling = new ArrayList<>(); private static final ExecutorService executor = - Helper.getBackgroundExecutor(0, 1, 3, "send"); + Helper.getBackgroundExecutor(1, "send"); private static final int RETRY_MAX = 3; private static final int CONNECTIVITY_DELAY = 5000; // milliseconds diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index e415123a56..87da82da4a 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -129,9 +129,9 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences private final MediatorState liveAccountNetworkState = new MediatorState(); private static final ExecutorService executorService = - Helper.getBackgroundExecutor(1, 1, 0, "sync"); + Helper.getBackgroundExecutor(1, "sync"); private static final ExecutorService executorNotify = - Helper.getBackgroundExecutor(0, 1, 3, "notify"); + Helper.getBackgroundExecutor(1, "notify"); private static final long BACKUP_DELAY = 30 * 1000L; // milliseconds private static final long PURGE_DELAY = 30 * 1000L; // milliseconds diff --git a/app/src/main/java/eu/faircode/email/SimpleTask.java b/app/src/main/java/eu/faircode/email/SimpleTask.java index 4098c34585..cded64d90c 100644 --- a/app/src/main/java/eu/faircode/email/SimpleTask.java +++ b/app/src/main/java/eu/faircode/email/SimpleTask.java @@ -45,7 +45,6 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; -import java.util.concurrent.RunnableFuture; import java.util.concurrent.ThreadPoolExecutor; // This simple task is simple to use, but it is also simple to cause bugs that can easily lead to crashes @@ -74,10 +73,10 @@ public abstract class SimpleTask implements LifecycleObserver { private static final List tasks = new ArrayList<>(); private static final ExecutorService serialExecutor = - Helper.getBackgroundExecutor(0, 1, 3, "tasks/serial"); + Helper.getBackgroundExecutor(1, "tasks/serial"); private static final ExecutorService globalExecutor = - Helper.getBackgroundExecutor(0, 0, 3, "tasks/global"); + Helper.getBackgroundExecutor(0, "tasks/global"); private static final int REPORT_AFTER = 15 * 60 * 1000; // milliseconds diff --git a/app/src/main/java/eu/faircode/email/TextHelper.java b/app/src/main/java/eu/faircode/email/TextHelper.java index 1ea5e39e56..ed35a62b2b 100644 --- a/app/src/main/java/eu/faircode/email/TextHelper.java +++ b/app/src/main/java/eu/faircode/email/TextHelper.java @@ -68,7 +68,7 @@ public class TextHelper { private static final long MAX_CONVERSATION_DURATION = 3000; // milliseconds private static final ExecutorService executor = - Helper.getBackgroundExecutor(0, 1, 3, "text"); + Helper.getBackgroundExecutor(1, "text"); static { System.loadLibrary("fairemail"); diff --git a/app/src/main/java/eu/faircode/email/ViewModelMessages.java b/app/src/main/java/eu/faircode/email/ViewModelMessages.java index 3e26791ed9..567504e16f 100644 --- a/app/src/main/java/eu/faircode/email/ViewModelMessages.java +++ b/app/src/main/java/eu/faircode/email/ViewModelMessages.java @@ -69,7 +69,7 @@ public class ViewModelMessages extends ViewModel { }; private static final ExecutorService executor = - Helper.getBackgroundExecutor(0, 0, 3, "model"); + Helper.getBackgroundExecutor(0, "model"); private static final int LOCAL_PAGE_SIZE = 50; private static final int THREAD_PAGE_SIZE = 100;