jimu-decompiled/sources/io/reactivex/internal/schedulers/SingleScheduler.java
2025-05-13 19:24:51 +02:00

130 lines
4.8 KiB
Java

package io.reactivex.internal.schedulers;
import io.reactivex.Scheduler;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.disposables.Disposable;
import io.reactivex.internal.disposables.EmptyDisposable;
import io.reactivex.plugins.RxJavaPlugins;
import java.util.concurrent.Callable;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.RejectedExecutionException;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
/* loaded from: classes2.dex */
public final class SingleScheduler extends Scheduler {
static final RxThreadFactory c;
static final ScheduledExecutorService d = Executors.newScheduledThreadPool(0);
final AtomicReference<ScheduledExecutorService> b;
static final class ScheduledWorker extends Scheduler.Worker {
final ScheduledExecutorService a;
final CompositeDisposable b = new CompositeDisposable();
volatile boolean c;
ScheduledWorker(ScheduledExecutorService scheduledExecutorService) {
this.a = scheduledExecutorService;
}
@Override // io.reactivex.Scheduler.Worker
public Disposable a(Runnable runnable, long j, TimeUnit timeUnit) {
if (this.c) {
return EmptyDisposable.INSTANCE;
}
ScheduledRunnable scheduledRunnable = new ScheduledRunnable(RxJavaPlugins.a(runnable), this.b);
this.b.b(scheduledRunnable);
try {
scheduledRunnable.setFuture(j <= 0 ? this.a.submit((Callable) scheduledRunnable) : this.a.schedule((Callable) scheduledRunnable, j, timeUnit));
return scheduledRunnable;
} catch (RejectedExecutionException e) {
dispose();
RxJavaPlugins.b(e);
return EmptyDisposable.INSTANCE;
}
}
@Override // io.reactivex.disposables.Disposable
public void dispose() {
if (this.c) {
return;
}
this.c = true;
this.b.dispose();
}
}
static {
d.shutdown();
c = new RxThreadFactory("RxSingleScheduler", Math.max(1, Math.min(10, Integer.getInteger("rx2.single-priority", 5).intValue())), true);
}
public SingleScheduler() {
this(c);
}
static ScheduledExecutorService a(ThreadFactory threadFactory) {
return SchedulerPoolFactory.a(threadFactory);
}
public SingleScheduler(ThreadFactory threadFactory) {
this.b = new AtomicReference<>();
this.b.lazySet(a(threadFactory));
}
@Override // io.reactivex.Scheduler
public Scheduler.Worker a() {
return new ScheduledWorker(this.b.get());
}
@Override // io.reactivex.Scheduler
public Disposable a(Runnable runnable, long j, TimeUnit timeUnit) {
Future<?> schedule;
ScheduledDirectTask scheduledDirectTask = new ScheduledDirectTask(RxJavaPlugins.a(runnable));
try {
if (j <= 0) {
schedule = this.b.get().submit(scheduledDirectTask);
} else {
schedule = this.b.get().schedule(scheduledDirectTask, j, timeUnit);
}
scheduledDirectTask.setFuture(schedule);
return scheduledDirectTask;
} catch (RejectedExecutionException e) {
RxJavaPlugins.b(e);
return EmptyDisposable.INSTANCE;
}
}
@Override // io.reactivex.Scheduler
public Disposable a(Runnable runnable, long j, long j2, TimeUnit timeUnit) {
Future<?> schedule;
Runnable a = RxJavaPlugins.a(runnable);
if (j2 <= 0) {
ScheduledExecutorService scheduledExecutorService = this.b.get();
InstantPeriodicTask instantPeriodicTask = new InstantPeriodicTask(a, scheduledExecutorService);
try {
if (j <= 0) {
schedule = scheduledExecutorService.submit(instantPeriodicTask);
} else {
schedule = scheduledExecutorService.schedule(instantPeriodicTask, j, timeUnit);
}
instantPeriodicTask.a(schedule);
return instantPeriodicTask;
} catch (RejectedExecutionException e) {
RxJavaPlugins.b(e);
return EmptyDisposable.INSTANCE;
}
}
ScheduledDirectPeriodicTask scheduledDirectPeriodicTask = new ScheduledDirectPeriodicTask(a);
try {
scheduledDirectPeriodicTask.setFuture(this.b.get().scheduleAtFixedRate(scheduledDirectPeriodicTask, j, j2, timeUnit));
return scheduledDirectPeriodicTask;
} catch (RejectedExecutionException e2) {
RxJavaPlugins.b(e2);
return EmptyDisposable.INSTANCE;
}
}
}