diff options
author | Christian Schneppe <christian@pix-art.de> | 2017-11-21 21:09:08 +0100 |
---|---|---|
committer | Christian Schneppe <christian@pix-art.de> | 2017-11-21 21:09:08 +0100 |
commit | fdff7a4e89ae28ca50c9b17e9dd54b94ba47c207 (patch) | |
tree | 38a19eba18c2181a8c2013107b922645a67bd0e8 /src/main/java/de/pixart/messenger/utils/SerialSingleThreadExecutor.java | |
parent | 18310e63a7ef95426100d7498621afe8cb0a2348 (diff) |
excute db read and writes on different threads
Diffstat (limited to '')
-rw-r--r-- | src/main/java/de/pixart/messenger/utils/SerialSingleThreadExecutor.java | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/main/java/de/pixart/messenger/utils/SerialSingleThreadExecutor.java b/src/main/java/de/pixart/messenger/utils/SerialSingleThreadExecutor.java index b4ecf6e5e..ea1fb81f1 100644 --- a/src/main/java/de/pixart/messenger/utils/SerialSingleThreadExecutor.java +++ b/src/main/java/de/pixart/messenger/utils/SerialSingleThreadExecutor.java @@ -1,22 +1,26 @@ package de.pixart.messenger.utils; import android.os.Looper; +import android.util.Log; import java.util.ArrayDeque; import java.util.concurrent.Executor; import java.util.concurrent.Executors; +import de.pixart.messenger.Config; + public class SerialSingleThreadExecutor implements Executor { final Executor executor = Executors.newSingleThreadExecutor(); protected final ArrayDeque<Runnable> tasks = new ArrayDeque<>(); private Runnable active; + private final String name; - public SerialSingleThreadExecutor() { - this(false); + public SerialSingleThreadExecutor(String name) { + this(name, false); } - public SerialSingleThreadExecutor(boolean prepareLooper) { + public SerialSingleThreadExecutor(String name, boolean prepareLooper) { if (prepareLooper) { execute(new Runnable() { @Override @@ -25,6 +29,7 @@ public class SerialSingleThreadExecutor implements Executor { } }); } + this.name = name; } public synchronized void execute(final Runnable r) { @@ -45,6 +50,10 @@ public class SerialSingleThreadExecutor implements Executor { protected synchronized void scheduleNext() { if ((active = tasks.poll()) != null) { executor.execute(active); + int remaining = tasks.size(); + if (remaining > 0) { + Log.d(Config.LOGTAG, remaining + " remaining tasks on executor '" + name + "'"); + } } } }
\ No newline at end of file |