Synchronize access to job queue

pull/127/merge
Alex Baker 9 years ago
parent a0183c5976
commit 4aa3326245

@ -34,7 +34,7 @@ public class JobQueue<T extends JobQueueEntry> {
this.tag = tag; this.tag = tag;
} }
public void add(T entry) { public synchronized void add(T entry) {
boolean reschedule = jobs.isEmpty() || entry.getTime() < firstTime(); boolean reschedule = jobs.isEmpty() || entry.getTime() < firstTime();
jobs.put(entry.getTime(), entry); jobs.put(entry.getTime(), entry);
if (reschedule) { if (reschedule) {
@ -42,12 +42,12 @@ public class JobQueue<T extends JobQueueEntry> {
} }
} }
public void clear() { public synchronized void clear() {
jobs.clear(); jobs.clear();
jobManager.cancel(tag); jobManager.cancel(tag);
} }
public void cancel(long id) { public synchronized void cancel(long id) {
boolean reschedule = false; boolean reschedule = false;
long firstTime = firstTime(); long firstTime = firstTime();
List<T> existing = newArrayList(filter(jobs.values(), r -> r.getId() == id)); List<T> existing = newArrayList(filter(jobs.values(), r -> r.getId() == id));
@ -60,7 +60,7 @@ public class JobQueue<T extends JobQueueEntry> {
} }
} }
public List<T> removeOverdueJobs() { public synchronized List<T> removeOverdueJobs() {
List<T> result = newArrayList(); List<T> result = newArrayList();
SortedSet<Long> lapsed = jobs.keySet().headSet(currentTimeMillis() + 1); SortedSet<Long> lapsed = jobs.keySet().headSet(currentTimeMillis() + 1);
for (Long key : lapsed) { for (Long key : lapsed) {
@ -69,7 +69,7 @@ public class JobQueue<T extends JobQueueEntry> {
return result; return result;
} }
public void scheduleNext() { public synchronized void scheduleNext() {
scheduleNext(false); scheduleNext(false);
} }

Loading…
Cancel
Save