mirror of
https://codeberg.org/tom79/Fedilab.git
synced 2025-01-03 06:30:07 +02:00
Set one lock per account for push notif
This commit is contained in:
parent
36b28a4483
commit
ceebe74ec1
1 changed files with 13 additions and 1 deletions
|
@ -65,7 +65,18 @@ public class NotificationsHelper {
|
||||||
|
|
||||||
public static HashMap<String, List<String>> pushed_notifications = new HashMap<>();
|
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 {
|
public static synchronized void task(Context context, String slug) throws DBException {
|
||||||
|
|
||||||
|
@ -94,6 +105,7 @@ public class NotificationsHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
new Thread(() -> {
|
new Thread(() -> {
|
||||||
|
ReentrantLock lock = getLock(slug);
|
||||||
try {
|
try {
|
||||||
// fetch if we get the lock, or ignore, another thread is doing the job
|
// fetch if we get the lock, or ignore, another thread is doing the job
|
||||||
if (lock.tryLock()) {
|
if (lock.tryLock()) {
|
||||||
|
|
Loading…
Reference in a new issue