public void setFuture(Future<?> f) { for (;;) { Object o = get(FUTURE_INDEX); if (o == DONE) { return; } if (o == DISPOSED) { f.cancel(get(THREAD_INDEX) != Thread.currentThread()); return; } if (compareAndSet(FUTURE_INDEX, o, f)) { return; } } }
public void setFuture(Future<?> f) { for (;;) { Object o = get(FUTURE_INDEX); if (o == DONE) { return; } if (o == DISPOSED) { f.cancel(get(THREAD_INDEX) != Thread.currentThread()); return; } if (compareAndSet(FUTURE_INDEX, o, f)) { return; } } }
public void setFuture(Future<?> f) { for (;;) { Object o = get(FUTURE_INDEX); if (o == DONE) { return; } if (o == DISPOSED) { f.cancel(get(THREAD_INDEX) != Thread.currentThread()); return; } if (compareAndSet(FUTURE_INDEX, o, f)) { return; } } }
@Override public void dispose() { for (;;) { Object o = get(FUTURE_INDEX); if (o == DONE || o == DISPOSED) { break; } if (compareAndSet(FUTURE_INDEX, o, DISPOSED)) { if (o != null) { ((Future<?>)o).cancel(get(THREAD_INDEX) != Thread.currentThread()); } break; } } for (;;) { Object o = get(PARENT_INDEX); if (o == DONE || o == DISPOSED || o == null) { return; } if (compareAndSet(PARENT_INDEX, o, DISPOSED)) { ((DisposableContainer)o).delete(this); return; } } }
@Override public void dispose() { for (;;) { Object o = get(FUTURE_INDEX); if (o == DONE || o == DISPOSED) { break; } if (compareAndSet(FUTURE_INDEX, o, DISPOSED)) { if (o != null) { ((Future<?>)o).cancel(get(THREAD_INDEX) != Thread.currentThread()); } break; } } for (;;) { Object o = get(PARENT_INDEX); if (o == DONE || o == DISPOSED || o == null) { return; } if (compareAndSet(PARENT_INDEX, o, DISPOSED)) { ((DisposableContainer)o).delete(this); return; } } }
@Override public void dispose() { for (;;) { Object o = get(FUTURE_INDEX); if (o == DONE || o == DISPOSED) { break; } if (compareAndSet(FUTURE_INDEX, o, DISPOSED)) { if (o != null) { ((Future<?>)o).cancel(get(THREAD_INDEX) != Thread.currentThread()); } break; } } for (;;) { Object o = get(PARENT_INDEX); if (o == DONE || o == DISPOSED || o == null) { return; } if (compareAndSet(PARENT_INDEX, o, DISPOSED)) { ((DisposableContainer)o).delete(this); return; } } }
@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; } } } }