public final class io.reactivex.internal.schedulers.IoScheduler extends io.reactivex.Scheduler
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: io.reactivex.internal.schedulers.IoScheduler
super_class: io.reactivex.Scheduler
{
private static final java.lang.String WORKER_THREAD_NAME_PREFIX;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "RxCachedThreadScheduler"
static final io.reactivex.internal.schedulers.RxThreadFactory WORKER_THREAD_FACTORY;
descriptor: Lio/reactivex/internal/schedulers/RxThreadFactory;
flags: (0x0018) ACC_STATIC, ACC_FINAL
private static final java.lang.String EVICTOR_THREAD_NAME_PREFIX;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "RxCachedWorkerPoolEvictor"
static final io.reactivex.internal.schedulers.RxThreadFactory EVICTOR_THREAD_FACTORY;
descriptor: Lio/reactivex/internal/schedulers/RxThreadFactory;
flags: (0x0018) ACC_STATIC, ACC_FINAL
private static final java.lang.String KEY_KEEP_ALIVE_TIME;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "rx2.io-keep-alive-time"
public static final long KEEP_ALIVE_TIME_DEFAULT;
descriptor: J
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: 60
private static final long KEEP_ALIVE_TIME;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.util.concurrent.TimeUnit KEEP_ALIVE_UNIT;
descriptor: Ljava/util/concurrent/TimeUnit;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static final io.reactivex.internal.schedulers.IoScheduler$ThreadWorker SHUTDOWN_THREAD_WORKER;
descriptor: Lio/reactivex/internal/schedulers/IoScheduler$ThreadWorker;
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.IoScheduler$CachedWorkerPool> pool;
descriptor: Ljava/util/concurrent/atomic/AtomicReference;
flags: (0x0010) ACC_FINAL
Signature: Ljava/util/concurrent/atomic/AtomicReference<Lio/reactivex/internal/schedulers/IoScheduler$CachedWorkerPool;>;
private static final java.lang.String KEY_IO_PRIORITY;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "rx2.io-priority"
static final io.reactivex.internal.schedulers.IoScheduler$CachedWorkerPool NONE;
descriptor: Lio/reactivex/internal/schedulers/IoScheduler$CachedWorkerPool;
flags: (0x0018) ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=6, locals=1, args_size=0
0: getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
putstatic io.reactivex.internal.schedulers.IoScheduler.KEEP_ALIVE_UNIT:Ljava/util/concurrent/TimeUnit;
1: ldc "rx2.io-keep-alive-time"
ldc 60
invokestatic java.lang.Long.getLong:(Ljava/lang/String;J)Ljava/lang/Long;
invokevirtual java.lang.Long.longValue:()J
putstatic io.reactivex.internal.schedulers.IoScheduler.KEEP_ALIVE_TIME:J
2: new io.reactivex.internal.schedulers.IoScheduler$ThreadWorker
dup
new io.reactivex.internal.schedulers.RxThreadFactory
dup
ldc "RxCachedThreadSchedulerShutdown"
invokespecial io.reactivex.internal.schedulers.RxThreadFactory.<init>:(Ljava/lang/String;)V
invokespecial io.reactivex.internal.schedulers.IoScheduler$ThreadWorker.<init>:(Ljava/util/concurrent/ThreadFactory;)V
putstatic io.reactivex.internal.schedulers.IoScheduler.SHUTDOWN_THREAD_WORKER:Lio/reactivex/internal/schedulers/IoScheduler$ThreadWorker;
3: getstatic io.reactivex.internal.schedulers.IoScheduler.SHUTDOWN_THREAD_WORKER:Lio/reactivex/internal/schedulers/IoScheduler$ThreadWorker;
invokevirtual io.reactivex.internal.schedulers.IoScheduler$ThreadWorker.dispose:()V
4: iconst_1
bipush 10
5: ldc "rx2.io-priority"
iconst_5
invokestatic java.lang.Integer.getInteger:(Ljava/lang/String;I)Ljava/lang/Integer;
invokevirtual java.lang.Integer.intValue:()I
6: invokestatic java.lang.Math.min:(II)I
invokestatic java.lang.Math.max:(II)I
istore 0
start local 0 7: new io.reactivex.internal.schedulers.RxThreadFactory
dup
ldc "RxCachedThreadScheduler"
iload 0
invokespecial io.reactivex.internal.schedulers.RxThreadFactory.<init>:(Ljava/lang/String;I)V
putstatic io.reactivex.internal.schedulers.IoScheduler.WORKER_THREAD_FACTORY:Lio/reactivex/internal/schedulers/RxThreadFactory;
8: new io.reactivex.internal.schedulers.RxThreadFactory
dup
ldc "RxCachedWorkerPoolEvictor"
iload 0
invokespecial io.reactivex.internal.schedulers.RxThreadFactory.<init>:(Ljava/lang/String;I)V
putstatic io.reactivex.internal.schedulers.IoScheduler.EVICTOR_THREAD_FACTORY:Lio/reactivex/internal/schedulers/RxThreadFactory;
9: new io.reactivex.internal.schedulers.IoScheduler$CachedWorkerPool
dup
lconst_0
aconst_null
getstatic io.reactivex.internal.schedulers.IoScheduler.WORKER_THREAD_FACTORY:Lio/reactivex/internal/schedulers/RxThreadFactory;
invokespecial io.reactivex.internal.schedulers.IoScheduler$CachedWorkerPool.<init>:(JLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/ThreadFactory;)V
putstatic io.reactivex.internal.schedulers.IoScheduler.NONE:Lio/reactivex/internal/schedulers/IoScheduler$CachedWorkerPool;
10: getstatic io.reactivex.internal.schedulers.IoScheduler.NONE:Lio/reactivex/internal/schedulers/IoScheduler$CachedWorkerPool;
invokevirtual io.reactivex.internal.schedulers.IoScheduler$CachedWorkerPool.shutdown:()V
end local 0 11: return
LocalVariableTable:
Start End Slot Name Signature
7 11 0 priority I
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.IoScheduler.WORKER_THREAD_FACTORY:Lio/reactivex/internal/schedulers/RxThreadFactory;
invokespecial io.reactivex.internal.schedulers.IoScheduler.<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/IoScheduler;
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.IoScheduler.threadFactory:Ljava/util/concurrent/ThreadFactory;
2: aload 0
new java.util.concurrent.atomic.AtomicReference
dup
getstatic io.reactivex.internal.schedulers.IoScheduler.NONE:Lio/reactivex/internal/schedulers/IoScheduler$CachedWorkerPool;
invokespecial java.util.concurrent.atomic.AtomicReference.<init>:(Ljava/lang/Object;)V
putfield io.reactivex.internal.schedulers.IoScheduler.pool:Ljava/util/concurrent/atomic/AtomicReference;
3: aload 0
invokevirtual io.reactivex.internal.schedulers.IoScheduler.start:()V
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lio/reactivex/internal/schedulers/IoScheduler;
0 5 1 threadFactory Ljava/util/concurrent/ThreadFactory;
MethodParameters:
Name Flags
threadFactory
public void start();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=2, args_size=1
start local 0 0: new io.reactivex.internal.schedulers.IoScheduler$CachedWorkerPool
dup
getstatic io.reactivex.internal.schedulers.IoScheduler.KEEP_ALIVE_TIME:J
getstatic io.reactivex.internal.schedulers.IoScheduler.KEEP_ALIVE_UNIT:Ljava/util/concurrent/TimeUnit;
aload 0
getfield io.reactivex.internal.schedulers.IoScheduler.threadFactory:Ljava/util/concurrent/ThreadFactory;
invokespecial io.reactivex.internal.schedulers.IoScheduler$CachedWorkerPool.<init>:(JLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/ThreadFactory;)V
astore 1
start local 1 1: aload 0
getfield io.reactivex.internal.schedulers.IoScheduler.pool:Ljava/util/concurrent/atomic/AtomicReference;
getstatic io.reactivex.internal.schedulers.IoScheduler.NONE:Lio/reactivex/internal/schedulers/IoScheduler$CachedWorkerPool;
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.IoScheduler$CachedWorkerPool.shutdown:()V
3: StackMap locals: io.reactivex.internal.schedulers.IoScheduler$CachedWorkerPool
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/reactivex/internal/schedulers/IoScheduler;
1 4 1 update Lio/reactivex/internal/schedulers/IoScheduler$CachedWorkerPool;
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.IoScheduler.pool:Ljava/util/concurrent/atomic/AtomicReference;
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast io.reactivex.internal.schedulers.IoScheduler$CachedWorkerPool
astore 1
start local 1 1: aload 1
getstatic io.reactivex.internal.schedulers.IoScheduler.NONE:Lio/reactivex/internal/schedulers/IoScheduler$CachedWorkerPool;
if_acmpne 3
2: return
3: StackMap locals: io.reactivex.internal.schedulers.IoScheduler$CachedWorkerPool
StackMap stack:
aload 0
getfield io.reactivex.internal.schedulers.IoScheduler.pool:Ljava/util/concurrent/atomic/AtomicReference;
aload 1
getstatic io.reactivex.internal.schedulers.IoScheduler.NONE:Lio/reactivex/internal/schedulers/IoScheduler$CachedWorkerPool;
invokevirtual java.util.concurrent.atomic.AtomicReference.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
ifeq 0
4: aload 1
invokevirtual io.reactivex.internal.schedulers.IoScheduler$CachedWorkerPool.shutdown:()V
5: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lio/reactivex/internal/schedulers/IoScheduler;
1 6 1 curr Lio/reactivex/internal/schedulers/IoScheduler$CachedWorkerPool;
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.IoScheduler$EventLoopWorker
dup
aload 0
getfield io.reactivex.internal.schedulers.IoScheduler.pool:Ljava/util/concurrent/atomic/AtomicReference;
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast io.reactivex.internal.schedulers.IoScheduler$CachedWorkerPool
invokespecial io.reactivex.internal.schedulers.IoScheduler$EventLoopWorker.<init>:(Lio/reactivex/internal/schedulers/IoScheduler$CachedWorkerPool;)V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/reactivex/internal/schedulers/IoScheduler;
RuntimeInvisibleAnnotations:
io.reactivex.annotations.NonNull()
public int size();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield io.reactivex.internal.schedulers.IoScheduler.pool:Ljava/util/concurrent/atomic/AtomicReference;
invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
checkcast io.reactivex.internal.schedulers.IoScheduler$CachedWorkerPool
getfield io.reactivex.internal.schedulers.IoScheduler$CachedWorkerPool.allWorkers:Lio/reactivex/disposables/CompositeDisposable;
invokevirtual io.reactivex.disposables.CompositeDisposable.size:()I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/reactivex/internal/schedulers/IoScheduler;
}
SourceFile: "IoScheduler.java"
NestMembers:
io.reactivex.internal.schedulers.IoScheduler$CachedWorkerPool io.reactivex.internal.schedulers.IoScheduler$EventLoopWorker io.reactivex.internal.schedulers.IoScheduler$ThreadWorker
InnerClasses:
public abstract Worker = io.reactivex.Scheduler$Worker of io.reactivex.Scheduler
final CachedWorkerPool = io.reactivex.internal.schedulers.IoScheduler$CachedWorkerPool of io.reactivex.internal.schedulers.IoScheduler
final EventLoopWorker = io.reactivex.internal.schedulers.IoScheduler$EventLoopWorker of io.reactivex.internal.schedulers.IoScheduler
final ThreadWorker = io.reactivex.internal.schedulers.IoScheduler$ThreadWorker of io.reactivex.internal.schedulers.IoScheduler