use of io.reactivex.rxjava3.disposables.CompositeDisposable in project RxJava by ReactiveX.
the class IoSchedulerInternalTest method expiredQueueEmpty.
@Test
public void expiredQueueEmpty() {
ConcurrentLinkedQueue<ThreadWorker> expire = new ConcurrentLinkedQueue<>();
CompositeDisposable cd = new CompositeDisposable();
CachedWorkerPool.evictExpiredWorkers(expire, cd);
}
use of io.reactivex.rxjava3.disposables.CompositeDisposable in project RxJava by ReactiveX.
the class IoSchedulerInternalTest method expireReuseRace.
@Test
public void expireReuseRace() {
ConcurrentLinkedQueue<ThreadWorker> expire = new ConcurrentLinkedQueue<>();
CompositeDisposable cd = new CompositeDisposable();
ThreadWorker tw = new ThreadWorker(new RxThreadFactory("IoExpiryTest"));
tw.dispose();
for (int i = 0; i < TestHelper.RACE_DEFAULT_LOOPS; i++) {
expire.add(tw);
cd.add(tw);
TestHelper.race(() -> CachedWorkerPool.evictExpiredWorkers(expire, cd), () -> expire.remove(tw));
}
}
use of io.reactivex.rxjava3.disposables.CompositeDisposable in project RxJava by ReactiveX.
the class SchedulerMultiWorkerSupportTest method distinctThreads.
@Test
public void distinctThreads() throws Exception {
for (int i = 0; i < TestHelper.RACE_DEFAULT_LOOPS; i++) {
final CompositeDisposable composite = new CompositeDisposable();
try {
final CountDownLatch cdl = new CountDownLatch(max * 2);
final Set<String> threads1 = Collections.synchronizedSet(new HashSet<>());
final Set<String> threads2 = Collections.synchronizedSet(new HashSet<>());
Runnable parallel1 = new Runnable() {
@Override
public void run() {
final List<Worker> list1 = new ArrayList<>();
SchedulerMultiWorkerSupport mws = (SchedulerMultiWorkerSupport) Schedulers.computation();
mws.createWorkers(max, new WorkerCallback() {
@Override
public void onWorker(int i, Worker w) {
list1.add(w);
composite.add(w);
}
});
Runnable run = new Runnable() {
@Override
public void run() {
threads1.add(Thread.currentThread().getName());
cdl.countDown();
}
};
for (Worker w : list1) {
w.schedule(run);
}
}
};
Runnable parallel2 = new Runnable() {
@Override
public void run() {
final List<Worker> list2 = new ArrayList<>();
SchedulerMultiWorkerSupport mws = (SchedulerMultiWorkerSupport) Schedulers.computation();
mws.createWorkers(max, new WorkerCallback() {
@Override
public void onWorker(int i, Worker w) {
list2.add(w);
composite.add(w);
}
});
Runnable run = new Runnable() {
@Override
public void run() {
threads2.add(Thread.currentThread().getName());
cdl.countDown();
}
};
for (Worker w : list2) {
w.schedule(run);
}
}
};
TestHelper.race(parallel1, parallel2);
assertTrue(cdl.await(5, TimeUnit.SECONDS));
assertEquals(threads1.toString(), max, threads1.size());
assertEquals(threads2.toString(), max, threads2.size());
} finally {
composite.dispose();
}
}
}
use of io.reactivex.rxjava3.disposables.CompositeDisposable in project RxJava by ReactiveX.
the class ScheduledRunnableTest method dispose.
@Test
public void dispose() {
CompositeDisposable set = new CompositeDisposable();
ScheduledRunnable run = new ScheduledRunnable(Functions.EMPTY_RUNNABLE, set);
set.add(run);
assertFalse(run.isDisposed());
set.dispose();
assertTrue(run.isDisposed());
}
use of io.reactivex.rxjava3.disposables.CompositeDisposable in project RxJava by ReactiveX.
the class ScheduledRunnableTest method withParentIsDisposed.
@Test
public void withParentIsDisposed() {
CompositeDisposable set = new CompositeDisposable();
ScheduledRunnable run = new ScheduledRunnable(Functions.EMPTY_RUNNABLE, set);
set.add(run);
assertFalse(run.isDisposed());
run.run();
assertTrue(run.isDisposed());
assertFalse(set.remove(run));
}
Aggregations