Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 19 additions & 12 deletions src/main/java/rx/schedulers/TestScheduler.java
Original file line number Diff line number Diff line change
Expand Up @@ -109,15 +109,20 @@ public void triggerActions() {
}

private void triggerActions(long targetTimeInNanos) {
while (!queue.isEmpty()) {
TimedAction current = queue.peek();
if (current.time > targetTimeInNanos) {
break;
while (true) {
TimedAction current = null;
synchronized (queue) {
if (queue.isEmpty()) {
break;
}
current = queue.peek();
if (current.time > targetTimeInNanos) {
break;
}
// if scheduled time is 0 (immediate) use current virtual time
time = current.time == 0 ? time : current.time;
queue.remove();
}
// if scheduled time is 0 (immediate) use current virtual time
time = current.time == 0 ? time : current.time;
queue.remove();

// Only execute if not unsubscribed
if (!current.scheduler.isUnsubscribed()) {
current.action.call();
Expand Down Expand Up @@ -156,9 +161,10 @@ public Subscription schedule(Action0 action, long delayTime, TimeUnit unit) {

@Override
public void call() {
queue.remove(timedAction);
synchronized (queue) {
queue.remove(timedAction);
}
}

});
}

Expand All @@ -170,9 +176,10 @@ public Subscription schedule(Action0 action) {

@Override
public void call() {
queue.remove(timedAction);
synchronized (queue) {
queue.remove(timedAction);
}
}

});
}

Expand Down