From e8b4038c12a357426ed05d96375c75c74735194d Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 8 Mar 2020 12:32:52 +0100 Subject: [PATCH] Guarantee single thread execution order --- app/src/main/java/eu/faircode/email/Helper.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index 4d874a1411..520c5457b9 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -127,6 +127,7 @@ import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicLong; import java.util.regex.Pattern; import static android.os.Process.THREAD_PRIORITY_BACKGROUND; @@ -190,6 +191,8 @@ public class Helper { 0L, TimeUnit.MILLISECONDS, new PriorityBlockingQueue(10, new PriorityComparator()), factory) { + private final AtomicLong sequenceId = new AtomicLong(); + @Override protected RunnableFuture newTaskFor(Runnable runnable, T value) { RunnableFuture task = super.newTaskFor(runnable, value); @@ -198,7 +201,7 @@ public class Helper { ((PriorityRunnable) runnable).getPriority(), ((PriorityRunnable) runnable).getOrder()); else - return task; + return new PriorityFuture<>(task, 0, sequenceId.getAndIncrement()); } }; else