@Override public void dispose() { if (!disposed) { OpenHashSet<Disposable> set; synchronized (this) { if (disposed) { return; } set = tasks; tasks = null; disposed = true; } Object[] keys = set.keys(); for (Object o : keys) { if (o instanceof Disposable) { ((Disposable) o).dispose(); } } } }
public boolean add(Subscription s) { if (!cancelled) { synchronized (this) { if (!cancelled) { OpenHashSet<Subscription> h = set; if (h == null) { h = new OpenHashSet<Subscription>(); set = h; } h.add(s); return true; } } } s.cancel(); return false; }
@Override public void cancel() { if (!cancelled) { OpenHashSet<Subscription> h; synchronized (this) { if (cancelled) { return; } h = set; set = null; cancelled = true; } if (h != null) { Object[] array = h.keys(); for (Object o : array) { if (o != null) { ((Subscription)o).cancel(); } } } } }
@Override public void dispose() { if (!disposed) { OpenHashSet<WorkerTask> set; synchronized (this) { if (disposed) { return; } disposed = true; set = tasks; tasks = null; } Object[] o = set.keys(); for (Object e : o) { if (e instanceof WorkerTask) { WorkerTask wt = (WorkerTask) e; wt.dispose(); } } } }
public void delete(Subscription s) { if (!cancelled) { synchronized (this) { if (!cancelled) { OpenHashSet<Subscription> h = set; if (h != null) { h.remove(s); } } } } }
boolean add(WorkerTask task) { synchronized (this) { OpenHashSet<WorkerTask> set = tasks; if (set != null) { set.add(task); return true; } } return false; }
void delete(WorkerTask task) { synchronized (this) { OpenHashSet<WorkerTask> set = tasks; if (set != null) { set.remove(task); } } }
AsyncSwingWorker() { this.tasks = new OpenHashSet<Disposable>(); }
SingleResourceWorker() { this.tasks = new OpenHashSet<>(); }