public final class io.reactivex.internal.schedulers.ComputationScheduler extends io.reactivex.Scheduler implements io.reactivex.internal.schedulers.SchedulerMultiWorkerSupport
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: io.reactivex.internal.schedulers.ComputationScheduler
super_class: io.reactivex.Scheduler
{
static final io.reactivex.internal.schedulers.ComputationScheduler$FixedSchedulerPool NONE;
descriptor: Lio/reactivex/internal/schedulers/ComputationScheduler$FixedSchedulerPool;
flags: (0x0018) ACC_STATIC, ACC_FINAL
private static final java.lang.String THREAD_NAME_PREFIX;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "RxComputationThreadPool"
static final io.reactivex.internal.schedulers.RxThreadFactory THREAD_FACTORY;
descriptor: Lio/reactivex/internal/schedulers/RxThreadFactory;
flags: (0x0018) ACC_STATIC, ACC_FINAL
static final java.lang.String KEY_MAX_THREADS;
descriptor: Ljava/lang/String;
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: "rx2.computation-threads"
static final int MAX_THREADS;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
static final io.reactivex.internal.schedulers.ComputationScheduler$PoolWorker SHUTDOWN_WORKER;
descriptor: Lio/reactivex/internal/schedulers/ComputationScheduler$PoolWorker;
flags: (0x0018) ACC_STATIC, ACC_FINAL
final java.util.concurrent.ThreadFactory threadFactory;
descriptor: Ljava/util/concurrent/ThreadFactory;
flags: (0x0010) ACC_FINAL
final java.util.concurrent.atomic.AtomicReference<io.reactivex.internal.schedulers.ComputationScheduler$FixedSchedulerPool> pool;
descriptor: Ljava/util/concurrent/atomic/AtomicReference;
flags: (0x0010) ACC_FINAL
Signature: Ljava/util/concurrent/atomic/AtomicReference<Lio/reactivex/internal/schedulers/ComputationScheduler$FixedSchedulerPool;>;
private static final java.lang.String KEY_COMPUTATION_PRIORITY;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "rx2.computation-priority"
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=5, locals=1, args_size=0
0: invokestatic java.lang.Runtime.getRuntime:()Ljava/lang/Runtime;
invokevirtual java.lang.Runtime.availableProcessors:()I
ldc "rx2.computation-threads"
iconst_0
invokestatic java.lang.Integer.getInteger:(Ljava/lang/String;I)Ljava/lang/Integer;
invokevirtual java.lang.Integer.intValue:()I
invokestatic io.reactivex.internal.schedulers.ComputationScheduler.cap:(II)I
putstatic io.reactivex.internal.schedulers.ComputationScheduler.MAX_THREADS:I
1: new io.reactivex.internal.schedulers.ComputationScheduler$PoolWorker
dup
new io.reactivex.internal.schedulers.RxThreadFactory
dup
ldc "RxComputationShutdown"
invokespecial io.reactivex.internal.schedulers.RxThreadFactory.<init>:(Ljava/lang/String;)V
invokespecial io.reactivex.internal.schedulers.ComputationScheduler$PoolWorker.<init>:(Ljava/util/concurrent/ThreadFactory;)V
putstatic io.reactivex.internal.schedulers.ComputationScheduler.SHUTDOWN_WORKER:Lio/reactivex/internal/schedulers/ComputationScheduler$PoolWorker;
2: getstatic io.reactivex.internal.schedulers.ComputationScheduler.SHUTDOWN_WORKER:Lio/reactivex/internal/schedulers/ComputationScheduler$PoolWorker;
invokevirtual io.reactivex.internal.schedulers.ComputationScheduler$PoolWorker.dispose:()V
3: iconst_1
bipush 10
4: ldc "rx2.computation-priority"
iconst_5
invokestatic java.lang.Integer.getInteger:(Ljava/lang/String;I)Ljava/lang/Integer;
invokevirtual java.lang.Integer.intValue:()I
5: invokestatic java.lang.Math.min:(II)I
invokestatic java.lang.Math.max:(II)I
istore 0
start local 0 6: new io.reactivex.internal.schedulers.RxThreadFactory
dup
ldc "RxComputationThreadPool"
iload 0
iconst_1
invokespecial io.reactivex.internal.schedulers.RxThreadFactory.<init>:(Ljava/lang/String;IZ)V
putstatic io.reactivex.internal.schedulers.ComputationScheduler.THREAD_FACTORY:Lio/reactivex/internal/schedulers/RxThreadFactory;
7: new io.reactivex.internal.schedulers.ComputationScheduler$FixedSchedulerPool
dup
iconst_0
getstatic io.reactivex.internal.schedulers.ComputationScheduler.THREAD_FACTORY:Lio/reactivex/internal/schedulers/RxThreadFactory;
invokespecial io.reactivex.internal.schedulers.ComputationScheduler$FixedSchedulerPool.<init>:(ILjava/util/concurrent/ThreadFactory;)V
putstatic io.reactivex.internal.schedulers.ComputationScheduler.NONE:Lio/reactivex/internal/schedulers/ComputationScheduler$FixedSchedulerPool;
8: getstatic io.reactivex.internal.schedulers.ComputationScheduler.NONE:Lio/reactivex/internal/schedulers/ComputationScheduler$FixedSchedulerPool;
invokevirtual io.reactivex.internal.schedulers.ComputationScheduler$FixedSchedulerPool.shutdown:()V
end local 0 9: return
LocalVariableTable:
Start End Slot Name Signature
6 9 0 priority I
static int cap(int, int);
descriptor: (II)I
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: iload 1
ifle 1
iload 1
iload 0
if_icmple 2
StackMap locals:
StackMap stack:
1: iload 0
goto 3
StackMap locals:
StackMap stack:
2: iload 1
StackMap locals:
StackMap stack: int
3: ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 cpuCount I
0 4 1 paramThreads I
MethodParameters:
Name Flags
cpuCount
paramThreads
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getstatic io.reactivex.internal.schedulers.ComputationScheduler.THREAD_FACTORY:Lio/reactivex/internal/schedulers/RxThreadFactory;
invokespecial io.reactivex.internal.schedulers.ComputationScheduler.<init>:(Ljava/util/concurrent/ThreadFactory;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/reactivex/internal/schedulers/ComputationScheduler;
public void <init>(java.util.concurrent.ThreadFactory);
descriptor: (Ljava/util/concurrent/ThreadFactory;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial io.reactivex.Scheduler.<init>:()V
1: aload 0
aload 1
putfield io.reactivex.internal.schedulers.ComputationScheduler.threadFactory:Ljava/util/concurrent/ThreadFactory;
2: aload 0
new java.util.concurrent.atomic.AtomicReference
dup
getstatic io.reactivex.internal.schedulers.ComputationScheduler.NONE:Lio/reactivex/internal/schedulers/ComputationScheduler$FixedSchedulerPool;
invokespecial java.util.concurrent.atomic.AtomicReference.<init>:(Ljava/lang/Object;)V
putfield io.reactivex.internal.schedulers.ComputationScheduler.pool:Ljava/util/concurrent/atomic/AtomicReference;
3: aload 0
invokevirtual io.reactivex.internal.schedulers.ComputationScheduler.start:()V
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lio/reactivex/internal/schedulers/ComputationScheduler;
0 5 1 threadFactory Ljava/util/concurrent/ThreadFactory;
MethodParameters:
Name Flags
threadFactory
public io.reactivex.Scheduler$Worker createWorker();
descriptor: ()Lio/reactivex/Scheduler$Worker;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: new io.reactivex.internal.schedulers.ComputationScheduler$EventLoopWorker
dup
aload 0
getfield io.reactivex.internal.schedulers.ComputationScheduler.pool:Ljava/util/concurrent/atomic/AtomicReference;
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast io.reactivex.internal.schedulers.ComputationScheduler$FixedSchedulerPool
invokevirtual io.reactivex.internal.schedulers.ComputationScheduler$FixedSchedulerPool.getEventLoop:()Lio/reactivex/internal/schedulers/ComputationScheduler$PoolWorker;
invokespecial io.reactivex.internal.schedulers.ComputationScheduler$EventLoopWorker.<init>:(Lio/reactivex/internal/schedulers/ComputationScheduler$PoolWorker;)V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/reactivex/internal/schedulers/ComputationScheduler;
RuntimeInvisibleAnnotations:
io.reactivex.annotations.NonNull()
public void createWorkers(int, io.reactivex.internal.schedulers.SchedulerMultiWorkerSupport$WorkerCallback);
descriptor: (ILio/reactivex/internal/schedulers/SchedulerMultiWorkerSupport$WorkerCallback;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: iload 1
ldc "number > 0 required"
invokestatic io.reactivex.internal.functions.ObjectHelper.verifyPositive:(ILjava/lang/String;)I
pop
1: aload 0
getfield io.reactivex.internal.schedulers.ComputationScheduler.pool:Ljava/util/concurrent/atomic/AtomicReference;
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast io.reactivex.internal.schedulers.ComputationScheduler$FixedSchedulerPool
iload 1
aload 2
invokevirtual io.reactivex.internal.schedulers.ComputationScheduler$FixedSchedulerPool.createWorkers:(ILio/reactivex/internal/schedulers/SchedulerMultiWorkerSupport$WorkerCallback;)V
2: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/reactivex/internal/schedulers/ComputationScheduler;
0 3 1 number I
0 3 2 callback Lio/reactivex/internal/schedulers/SchedulerMultiWorkerSupport$WorkerCallback;
MethodParameters:
Name Flags
number
callback
public io.reactivex.disposables.Disposable scheduleDirect(java.lang.Runnable, long, java.util.concurrent.TimeUnit);
descriptor: (Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Lio/reactivex/disposables/Disposable;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 4 0: aload 0
getfield io.reactivex.internal.schedulers.ComputationScheduler.pool:Ljava/util/concurrent/atomic/AtomicReference;
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast io.reactivex.internal.schedulers.ComputationScheduler$FixedSchedulerPool
invokevirtual io.reactivex.internal.schedulers.ComputationScheduler$FixedSchedulerPool.getEventLoop:()Lio/reactivex/internal/schedulers/ComputationScheduler$PoolWorker;
astore 5
start local 5 1: aload 5
aload 1
lload 2
aload 4
invokevirtual io.reactivex.internal.schedulers.ComputationScheduler$PoolWorker.scheduleDirect:(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Lio/reactivex/disposables/Disposable;
areturn
end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/reactivex/internal/schedulers/ComputationScheduler;
0 2 1 run Ljava/lang/Runnable;
0 2 2 delay J
0 2 4 unit Ljava/util/concurrent/TimeUnit;
1 2 5 w Lio/reactivex/internal/schedulers/ComputationScheduler$PoolWorker;
RuntimeInvisibleAnnotations:
io.reactivex.annotations.NonNull()
RuntimeInvisibleParameterAnnotations:
0:
io.reactivex.annotations.NonNull()
1:
2:
MethodParameters:
Name Flags
run
delay
unit
public io.reactivex.disposables.Disposable schedulePeriodicallyDirect(java.lang.Runnable, long, long, java.util.concurrent.TimeUnit);
descriptor: (Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Lio/reactivex/disposables/Disposable;
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=8, args_size=5
start local 0 start local 1 start local 2 start local 4 start local 6 0: aload 0
getfield io.reactivex.internal.schedulers.ComputationScheduler.pool:Ljava/util/concurrent/atomic/AtomicReference;
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast io.reactivex.internal.schedulers.ComputationScheduler$FixedSchedulerPool
invokevirtual io.reactivex.internal.schedulers.ComputationScheduler$FixedSchedulerPool.getEventLoop:()Lio/reactivex/internal/schedulers/ComputationScheduler$PoolWorker;
astore 7
start local 7 1: aload 7
aload 1
lload 2
lload 4
aload 6
invokevirtual io.reactivex.internal.schedulers.ComputationScheduler$PoolWorker.schedulePeriodicallyDirect:(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Lio/reactivex/disposables/Disposable;
areturn
end local 7 end local 6 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/reactivex/internal/schedulers/ComputationScheduler;
0 2 1 run Ljava/lang/Runnable;
0 2 2 initialDelay J
0 2 4 period J
0 2 6 unit Ljava/util/concurrent/TimeUnit;
1 2 7 w Lio/reactivex/internal/schedulers/ComputationScheduler$PoolWorker;
RuntimeInvisibleAnnotations:
io.reactivex.annotations.NonNull()
RuntimeInvisibleParameterAnnotations:
0:
io.reactivex.annotations.NonNull()
1:
2:
3:
MethodParameters:
Name Flags
run
initialDelay
period
unit
public void start();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=1
start local 0 0: new io.reactivex.internal.schedulers.ComputationScheduler$FixedSchedulerPool
dup
getstatic io.reactivex.internal.schedulers.ComputationScheduler.MAX_THREADS:I
aload 0
getfield io.reactivex.internal.schedulers.ComputationScheduler.threadFactory:Ljava/util/concurrent/ThreadFactory;
invokespecial io.reactivex.internal.schedulers.ComputationScheduler$FixedSchedulerPool.<init>:(ILjava/util/concurrent/ThreadFactory;)V
astore 1
start local 1 1: aload 0
getfield io.reactivex.internal.schedulers.ComputationScheduler.pool:Ljava/util/concurrent/atomic/AtomicReference;
getstatic io.reactivex.internal.schedulers.ComputationScheduler.NONE:Lio/reactivex/internal/schedulers/ComputationScheduler$FixedSchedulerPool;
aload 1
invokevirtual java.util.concurrent.atomic.AtomicReference.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
ifne 3
2: aload 1
invokevirtual io.reactivex.internal.schedulers.ComputationScheduler$FixedSchedulerPool.shutdown:()V
3: StackMap locals: io.reactivex.internal.schedulers.ComputationScheduler$FixedSchedulerPool
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/reactivex/internal/schedulers/ComputationScheduler;
1 4 1 update Lio/reactivex/internal/schedulers/ComputationScheduler$FixedSchedulerPool;
public void shutdown();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: StackMap locals:
StackMap stack:
aload 0
getfield io.reactivex.internal.schedulers.ComputationScheduler.pool:Ljava/util/concurrent/atomic/AtomicReference;
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast io.reactivex.internal.schedulers.ComputationScheduler$FixedSchedulerPool
astore 1
start local 1 1: aload 1
getstatic io.reactivex.internal.schedulers.ComputationScheduler.NONE:Lio/reactivex/internal/schedulers/ComputationScheduler$FixedSchedulerPool;
if_acmpne 3
2: return
3: StackMap locals: io.reactivex.internal.schedulers.ComputationScheduler$FixedSchedulerPool
StackMap stack:
aload 0
getfield io.reactivex.internal.schedulers.ComputationScheduler.pool:Ljava/util/concurrent/atomic/AtomicReference;
aload 1
getstatic io.reactivex.internal.schedulers.ComputationScheduler.NONE:Lio/reactivex/internal/schedulers/ComputationScheduler$FixedSchedulerPool;
invokevirtual java.util.concurrent.atomic.AtomicReference.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
ifeq 0
4: aload 1
invokevirtual io.reactivex.internal.schedulers.ComputationScheduler$FixedSchedulerPool.shutdown:()V
5: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lio/reactivex/internal/schedulers/ComputationScheduler;
1 6 1 curr Lio/reactivex/internal/schedulers/ComputationScheduler$FixedSchedulerPool;
}
SourceFile: "ComputationScheduler.java"
NestMembers:
io.reactivex.internal.schedulers.ComputationScheduler$EventLoopWorker io.reactivex.internal.schedulers.ComputationScheduler$FixedSchedulerPool io.reactivex.internal.schedulers.ComputationScheduler$PoolWorker
InnerClasses:
public abstract Worker = io.reactivex.Scheduler$Worker of io.reactivex.Scheduler
final EventLoopWorker = io.reactivex.internal.schedulers.ComputationScheduler$EventLoopWorker of io.reactivex.internal.schedulers.ComputationScheduler
final FixedSchedulerPool = io.reactivex.internal.schedulers.ComputationScheduler$FixedSchedulerPool of io.reactivex.internal.schedulers.ComputationScheduler
final PoolWorker = io.reactivex.internal.schedulers.ComputationScheduler$PoolWorker of io.reactivex.internal.schedulers.ComputationScheduler
public abstract WorkerCallback = io.reactivex.internal.schedulers.SchedulerMultiWorkerSupport$WorkerCallback of io.reactivex.internal.schedulers.SchedulerMultiWorkerSupport