@Override public void run() { run.setFuture(ft); } };
@Override public void run() { run.setFuture(ft); } };
@Override public void run() { run.setFuture(ft); } };
@NonNull @Override public Disposable schedule(@NonNull Runnable run, long delay, @NonNull TimeUnit unit) { if (disposed) { return REJECTED; } Runnable decoratedRun = RxJavaCommonPlugins.onSchedule(run); ScheduledRunnable sr = new ScheduledRunnable(decoratedRun, tasks); tasks.add(sr); try { Future<?> f; if (delay <= 0L) { f = executor.submit((Callable<Object>)sr); } else { f = executor.schedule((Callable<Object>)sr, delay, unit); } sr.setFuture(f); } catch (RejectedExecutionException ex) { dispose(); RxJavaCommonPlugins.onError(ex); return REJECTED; } return sr; }
@NonNull @Override public Disposable schedule(@NonNull Runnable run, long delay, @NonNull TimeUnit unit) { if (disposed) { return REJECTED; } Runnable decoratedRun = RxJavaCommonPlugins.onSchedule(run); ScheduledRunnable sr = new ScheduledRunnable(decoratedRun, tasks); tasks.add(sr); try { Future<?> f; if (delay <= 0L) { f = executor.submit((Callable<Object>)sr); } else { f = executor.schedule((Callable<Object>)sr, delay, unit); } sr.setFuture(f); } catch (RejectedExecutionException ex) { dispose(); RxJavaCommonPlugins.onError(ex); return REJECTED; } return sr; }
@NonNull @Override public Disposable schedule(@NonNull Runnable run, long delay, @NonNull TimeUnit unit) { if (disposed) { return REJECTED; } Runnable decoratedRun = RxJavaCommonPlugins.onSchedule(run); ScheduledRunnable sr = new ScheduledRunnable(decoratedRun, tasks); tasks.add(sr); try { Future<?> f; if (delay <= 0L) { f = executor.submit((Callable<Object>)sr); } else { f = executor.schedule((Callable<Object>)sr, delay, unit); } sr.setFuture(f); } catch (RejectedExecutionException ex) { dispose(); RxJavaCommonPlugins.onError(ex); return REJECTED; } return sr; }
@Test public void withFutureDisposed2() { ScheduledRunnable run = new ScheduledRunnable(Functions.EMPTY_RUNNABLE, null); run.dispose(); run.setFuture(new FutureTask<Void>(Functions.EMPTY_RUNNABLE, null)); run.call(); }
@Test public void withFutureDisposed() { ScheduledRunnable run = new ScheduledRunnable(Functions.EMPTY_RUNNABLE, null); run.setFuture(new FutureTask<Void>(Functions.EMPTY_RUNNABLE, null)); run.dispose(); run.call(); }
@Test public void withFutureDisposed3() { ScheduledRunnable run = new ScheduledRunnable(Functions.EMPTY_RUNNABLE, null); run.dispose(); run.set(2, Thread.currentThread()); run.setFuture(new FutureTask<Void>(Functions.EMPTY_RUNNABLE, null)); run.call(); }
f = executor.schedule((Callable<Object>)sr, delayTime, unit); sr.setFuture(f); } catch (RejectedExecutionException ex) { if (parent != null) {
f = executor.schedule((Callable<Object>)sr, delayTime, unit); sr.setFuture(f); } catch (RejectedExecutionException ex) { if (parent != null) {
f = executor.schedule((Callable<Object>)sr, delayTime, unit); sr.setFuture(f); } catch (RejectedExecutionException ex) { if (parent != null) {
@NonNull @Override public Disposable schedule(@NonNull Runnable run, long delay, @NonNull TimeUnit unit) { if (delay <= 0) { return schedule(run); } if (disposed) { return REJECTED; } SequentialDisposable first = new SequentialDisposable(); final SequentialDisposable mar = new SequentialDisposable(first); final Runnable decoratedRun = RxJavaCommonPlugins.onSchedule(run); ScheduledRunnable sr = new ScheduledRunnable(new SequentialDispose(mar, decoratedRun), tasks); tasks.add(sr); if (executor instanceof ScheduledExecutorService) { try { Future<?> f = ((ScheduledExecutorService)executor).schedule((Callable<Object>)sr, delay, unit); sr.setFuture(f); } catch (RejectedExecutionException ex) { disposed = true; RxJavaCommonPlugins.onError(ex); return REJECTED; } } else { final Disposable d = HELPER.scheduleDirect(sr, delay, unit); sr.setFuture(new DisposeOnCancel(d)); } first.replace(sr); return mar; }
@NonNull @Override public Disposable schedule(@NonNull Runnable run, long delay, @NonNull TimeUnit unit) { if (delay <= 0) { return schedule(run); } if (disposed) { return REJECTED; } SequentialDisposable first = new SequentialDisposable(); final SequentialDisposable mar = new SequentialDisposable(first); final Runnable decoratedRun = RxJavaCommonPlugins.onSchedule(run); ScheduledRunnable sr = new ScheduledRunnable(new SequentialDispose(mar, decoratedRun), tasks); tasks.add(sr); if (executor instanceof ScheduledExecutorService) { try { Future<?> f = ((ScheduledExecutorService)executor).schedule((Callable<Object>)sr, delay, unit); sr.setFuture(f); } catch (RejectedExecutionException ex) { disposed = true; RxJavaCommonPlugins.onError(ex); return REJECTED; } } else { final Disposable d = HELPER.scheduleDirect(sr, delay, unit); sr.setFuture(new DisposeOnCancel(d)); } first.replace(sr); return mar; }
@NonNull @Override public Disposable schedule(@NonNull Runnable run, long delay, @NonNull TimeUnit unit) { if (delay <= 0) { return schedule(run); } if (disposed) { return REJECTED; } SequentialDisposable first = new SequentialDisposable(); final SequentialDisposable mar = new SequentialDisposable(first); final Runnable decoratedRun = RxJavaCommonPlugins.onSchedule(run); ScheduledRunnable sr = new ScheduledRunnable(new SequentialDispose(mar, decoratedRun), tasks); tasks.add(sr); if (executor instanceof ScheduledExecutorService) { try { Future<?> f = ((ScheduledExecutorService)executor).schedule((Callable<Object>)sr, delay, unit); sr.setFuture(f); } catch (RejectedExecutionException ex) { disposed = true; RxJavaCommonPlugins.onError(ex); return REJECTED; } } else { final Disposable d = HELPER.scheduleDirect(sr, delay, unit); sr.setFuture(new DisposeOnCancel(d)); } first.replace(sr); return mar; }