diff options
author | Thomas <tom79@noreply.codeberg.org> | 2023-09-05 04:53:33 +0000 |
---|---|---|
committer | Thomas <tom79@noreply.codeberg.org> | 2023-09-05 04:53:33 +0000 |
commit | 57860793ff64fc78d9c54fd83d2c7f4c5d3b20e5 (patch) | |
tree | b768db0f5903601766d9063a1ba719151f3ab5ea | |
parent | 5f3ca6239326dc0326d5dba2384bff48681466d8 (diff) | |
parent | ceebe74ec12fcfd9c97b7fcf89e8538e184e3ee4 (diff) |
Merge pull request 'Set one lock per account for push notif' (#956) from s1m/Fedilab:push-multi-lock into develop
Reviewed-on: https://codeberg.org/tom79/Fedilab/pulls/956
-rw-r--r-- | app/src/main/java/app/fedilab/android/mastodon/helper/NotificationsHelper.java | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/app/src/main/java/app/fedilab/android/mastodon/helper/NotificationsHelper.java b/app/src/main/java/app/fedilab/android/mastodon/helper/NotificationsHelper.java index 8d9e09bc0..a4572df6d 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/helper/NotificationsHelper.java +++ b/app/src/main/java/app/fedilab/android/mastodon/helper/NotificationsHelper.java @@ -64,7 +64,18 @@ public class NotificationsHelper { public static HashMap<String, List<String>> pushed_notifications = new HashMap<>(); - public static ReentrantLock lock = new ReentrantLock(); + private static final HashMap<String, ReentrantLock> lockMap = new HashMap<>(); + + private static ReentrantLock getLock(String slug) { + synchronized (lockMap) { + if (lockMap.containsKey(slug)) { + return lockMap.get(slug); + } + ReentrantLock lock = new ReentrantLock(); + lockMap.put(slug, lock); + return lock; + } + } public static synchronized void task(Context context, String slug) throws DBException { @@ -93,6 +104,7 @@ public class NotificationsHelper { } new Thread(() -> { + ReentrantLock lock = getLock(slug); try { // fetch if we get the lock, or ignore, another thread is doing the job if (lock.tryLock()) { |