diff --git a/src/main/java/org/tasks/jobs/JobQueue.java b/src/main/java/org/tasks/jobs/JobQueue.java index 2c54c3bc5..b176a992b 100644 --- a/src/main/java/org/tasks/jobs/JobQueue.java +++ b/src/main/java/org/tasks/jobs/JobQueue.java @@ -34,7 +34,7 @@ public class JobQueue { this.tag = tag; } - public void add(T entry) { + public synchronized void add(T entry) { boolean reschedule = jobs.isEmpty() || entry.getTime() < firstTime(); jobs.put(entry.getTime(), entry); if (reschedule) { @@ -42,12 +42,12 @@ public class JobQueue { } } - public void clear() { + public synchronized void clear() { jobs.clear(); jobManager.cancel(tag); } - public void cancel(long id) { + public synchronized void cancel(long id) { boolean reschedule = false; long firstTime = firstTime(); List existing = newArrayList(filter(jobs.values(), r -> r.getId() == id)); @@ -60,7 +60,7 @@ public class JobQueue { } } - public List removeOverdueJobs() { + public synchronized List removeOverdueJobs() { List result = newArrayList(); SortedSet lapsed = jobs.keySet().headSet(currentTimeMillis() + 1); for (Long key : lapsed) { @@ -69,7 +69,7 @@ public class JobQueue { return result; } - public void scheduleNext() { + public synchronized void scheduleNext() { scheduleNext(false); }