/** * Creates a ScheduledRunnable by wrapping the given action and setting * up the optional parent. * @param actual the runnable to wrap, not-null (not verified) * @param parent the parent tracking container or null if none */ public ScheduledRunnable(Runnable actual, DisposableContainer parent) { super(3); this.actual = actual; this.lazySet(0, parent); }
/** * Creates a ScheduledRunnable by wrapping the given action and setting * up the optional parent. * @param actual the runnable to wrap, not-null (not verified) * @param parent the parent tracking container or null if none */ public ScheduledRunnable(Runnable actual, DisposableContainer parent) { super(3); this.actual = actual; this.lazySet(0, parent); }
/** * Creates a ScheduledRunnable by wrapping the given action and setting * up the optional parent. * @param actual the runnable to wrap, not-null (not verified) * @param parent the parent tracking container or null if none */ public ScheduledRunnable(Runnable actual, DisposableContainer parent) { super(3); this.actual = actual; this.lazySet(0, parent); }
@Override public void run() { lazySet(THREAD_INDEX, Thread.currentThread()); try { try { actual.run(); } catch (Throwable e) { // Exceptions.throwIfFatal(e); nowhere to go RxJavaCommonPlugins.onError(e); } } finally { lazySet(THREAD_INDEX, null); Object o = get(PARENT_INDEX); if (o != DISPOSED && o != null && compareAndSet(PARENT_INDEX, o, DONE)) { ((DisposableContainer)o).delete(this); } for (;;) { o = get(FUTURE_INDEX); if (o == DISPOSED || compareAndSet(FUTURE_INDEX, o, DONE)) { break; } } } }
@Override public void run() { lazySet(THREAD_INDEX, Thread.currentThread()); try { try { actual.run(); } catch (Throwable e) { // Exceptions.throwIfFatal(e); nowhere to go RxJavaCommonPlugins.onError(e); } } finally { lazySet(THREAD_INDEX, null); Object o = get(PARENT_INDEX); if (o != DISPOSED && o != null && compareAndSet(PARENT_INDEX, o, DONE)) { ((DisposableContainer)o).delete(this); } for (;;) { o = get(FUTURE_INDEX); if (o == DISPOSED || compareAndSet(FUTURE_INDEX, o, DONE)) { break; } } } }
@Override public void run() { lazySet(THREAD_INDEX, Thread.currentThread()); try { try { actual.run(); } catch (Throwable e) { // Exceptions.throwIfFatal(e); nowhere to go RxJavaCommonPlugins.onError(e); } } finally { lazySet(THREAD_INDEX, null); Object o = get(PARENT_INDEX); if (o != DISPOSED && o != null && compareAndSet(PARENT_INDEX, o, DONE)) { ((DisposableContainer)o).delete(this); } for (;;) { o = get(FUTURE_INDEX); if (o == DISPOSED || compareAndSet(FUTURE_INDEX, o, DONE)) { break; } } } }