@Override public void dispose() { if (!disposed) { disposed = true; tasks.dispose(); if (wip.getAndIncrement() == 0) { queue.clear(); } } }
@Override public void dispose() { if (!disposed) { disposed = true; tasks.dispose(); if (wip.getAndIncrement() == 0) { queue.clear(); } } }
@Override public void dispose() { if (!disposed) { disposed = true; tasks.dispose(); if (wip.getAndIncrement() == 0) { queue.clear(); } } }
@Override public void run() { int missed = 1; final AbstractMpscLinkedQueue<Runnable> q = queue; for (;;) { if (disposed) { q.clear(); return; } for (;;) { Runnable run = q.poll(); if (run == null) { break; } run.run(); if (disposed) { q.clear(); return; } } if (disposed) { q.clear(); return; } missed = wip.addAndGet(-missed); if (missed == 0) { break; } } }
@Override public void run() { int missed = 1; final AbstractMpscLinkedQueue<Runnable> q = queue; for (;;) { if (disposed) { q.clear(); return; } for (;;) { Runnable run = q.poll(); if (run == null) { break; } run.run(); if (disposed) { q.clear(); return; } } if (disposed) { q.clear(); return; } missed = wip.addAndGet(-missed); if (missed == 0) { break; } } }
@Override public void run() { int missed = 1; final AbstractMpscLinkedQueue<Runnable> q = queue; for (;;) { if (disposed) { q.clear(); return; } for (;;) { Runnable run = q.poll(); if (run == null) { break; } run.run(); if (disposed) { q.clear(); return; } } if (disposed) { q.clear(); return; } missed = wip.addAndGet(-missed); if (missed == 0) { break; } } }
@NonNull @Override public Disposable schedule(@NonNull Runnable run) { if (disposed) { return REJECTED; } Runnable decoratedRun = RxJavaCommonPlugins.onSchedule(run); BooleanRunnable br = new BooleanRunnable(decoratedRun); queue.offer(br); if (wip.getAndIncrement() == 0) { try { executor.execute(this); } catch (RejectedExecutionException ex) { disposed = true; queue.clear(); RxJavaCommonPlugins.onError(ex); return REJECTED; } } return br; }
@NonNull @Override public Disposable schedule(@NonNull Runnable run) { if (disposed) { return REJECTED; } Runnable decoratedRun = RxJavaCommonPlugins.onSchedule(run); BooleanRunnable br = new BooleanRunnable(decoratedRun); queue.offer(br); if (wip.getAndIncrement() == 0) { try { executor.execute(this); } catch (RejectedExecutionException ex) { disposed = true; queue.clear(); RxJavaCommonPlugins.onError(ex); return REJECTED; } } return br; }
@NonNull @Override public Disposable schedule(@NonNull Runnable run) { if (disposed) { return REJECTED; } Runnable decoratedRun = RxJavaCommonPlugins.onSchedule(run); BooleanRunnable br = new BooleanRunnable(decoratedRun); queue.offer(br); if (wip.getAndIncrement() == 0) { try { executor.execute(this); } catch (RejectedExecutionException ex) { disposed = true; queue.clear(); RxJavaCommonPlugins.onError(ex); return REJECTED; } } return br; }