diff --git a/rxjava-core/src/main/java/rx/concurrency/SleepingAction.java b/rxjava-core/src/main/java/rx/concurrency/SleepingAction.java index db7ece2469..62d3f399ff 100644 --- a/rxjava-core/src/main/java/rx/concurrency/SleepingAction.java +++ b/rxjava-core/src/main/java/rx/concurrency/SleepingAction.java @@ -34,13 +34,17 @@ public SleepingAction(Func2 underlying, Scheduler sc @Override public Subscription call(Scheduler s, T state) { - if (execTime < scheduler.now()) { + if (execTime > scheduler.now()) { + long delay = execTime - scheduler.now(); + if (delay> 0) { try { - Thread.sleep(scheduler.now() - execTime); - } catch (InterruptedException e) { + Thread.sleep(delay); + } + catch (InterruptedException e) { Thread.currentThread().interrupt(); throw new RuntimeException(e); } + } } return underlying.call(s, state);