public final class io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker extends io.reactivex.Scheduler$Worker implements java.lang.Runnable
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker
super_class: io.reactivex.Scheduler$Worker
{
final boolean interruptibleWorker;
descriptor: Z
flags: (0x0010) ACC_FINAL
final java.util.concurrent.Executor executor;
descriptor: Ljava/util/concurrent/Executor;
flags: (0x0010) ACC_FINAL
final io.reactivex.internal.queue.MpscLinkedQueue<java.lang.Runnable> queue;
descriptor: Lio/reactivex/internal/queue/MpscLinkedQueue;
flags: (0x0010) ACC_FINAL
Signature: Lio/reactivex/internal/queue/MpscLinkedQueue<Ljava/lang/Runnable;>;
volatile boolean disposed;
descriptor: Z
flags: (0x0040) ACC_VOLATILE
final java.util.concurrent.atomic.AtomicInteger wip;
descriptor: Ljava/util/concurrent/atomic/AtomicInteger;
flags: (0x0010) ACC_FINAL
final io.reactivex.disposables.CompositeDisposable tasks;
descriptor: Lio/reactivex/disposables/CompositeDisposable;
flags: (0x0010) ACC_FINAL
public void <init>(java.util.concurrent.Executor, boolean);
descriptor: (Ljava/util/concurrent/Executor;Z)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial io.reactivex.Scheduler$Worker.<init>:()V
1: aload 0
new java.util.concurrent.atomic.AtomicInteger
dup
invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:()V
putfield io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.wip:Ljava/util/concurrent/atomic/AtomicInteger;
2: aload 0
new io.reactivex.disposables.CompositeDisposable
dup
invokespecial io.reactivex.disposables.CompositeDisposable.<init>:()V
putfield io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.tasks:Lio/reactivex/disposables/CompositeDisposable;
3: aload 0
aload 1
putfield io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.executor:Ljava/util/concurrent/Executor;
4: aload 0
new io.reactivex.internal.queue.MpscLinkedQueue
dup
invokespecial io.reactivex.internal.queue.MpscLinkedQueue.<init>:()V
putfield io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.queue:Lio/reactivex/internal/queue/MpscLinkedQueue;
5: aload 0
iload 2
putfield io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.interruptibleWorker:Z
6: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lio/reactivex/internal/schedulers/ExecutorScheduler$ExecutorWorker;
0 7 1 executor Ljava/util/concurrent/Executor;
0 7 2 interruptibleWorker Z
MethodParameters:
Name Flags
executor
interruptibleWorker
public io.reactivex.disposables.Disposable schedule(java.lang.Runnable);
descriptor: (Ljava/lang/Runnable;)Lio/reactivex/disposables/Disposable;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=6, args_size=2
start local 0 start local 1 0: aload 0
getfield io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.disposed:Z
ifeq 2
1: getstatic io.reactivex.internal.disposables.EmptyDisposable.INSTANCE:Lio/reactivex/internal/disposables/EmptyDisposable;
areturn
2: StackMap locals:
StackMap stack:
aload 1
invokestatic io.reactivex.plugins.RxJavaPlugins.onSchedule:(Ljava/lang/Runnable;)Ljava/lang/Runnable;
astore 2
start local 2 3: aload 0
getfield io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.interruptibleWorker:Z
ifeq 9
4: new io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker$InterruptibleRunnable
dup
aload 2
aload 0
getfield io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.tasks:Lio/reactivex/disposables/CompositeDisposable;
invokespecial io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker$InterruptibleRunnable.<init>:(Ljava/lang/Runnable;Lio/reactivex/internal/disposables/DisposableContainer;)V
astore 5
start local 5 5: aload 0
getfield io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.tasks:Lio/reactivex/disposables/CompositeDisposable;
aload 5
invokevirtual io.reactivex.disposables.CompositeDisposable.add:(Lio/reactivex/disposables/Disposable;)Z
pop
6: aload 5
astore 3
start local 3 7: aload 5
astore 4
end local 5 start local 4 8: goto 12
end local 4 end local 3 9: StackMap locals: java.lang.Runnable
StackMap stack:
new io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker$BooleanRunnable
dup
aload 2
invokespecial io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker$BooleanRunnable.<init>:(Ljava/lang/Runnable;)V
astore 5
start local 5 10: aload 5
astore 3
start local 3 11: aload 5
astore 4
end local 5 start local 4 12: StackMap locals: java.lang.Runnable io.reactivex.disposables.Disposable
StackMap stack:
aload 0
getfield io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.queue:Lio/reactivex/internal/queue/MpscLinkedQueue;
aload 3
invokevirtual io.reactivex.internal.queue.MpscLinkedQueue.offer:(Ljava/lang/Object;)Z
pop
13: aload 0
getfield io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.wip:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.getAndIncrement:()I
ifne 21
14: aload 0
getfield io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.executor:Ljava/util/concurrent/Executor;
aload 0
invokeinterface java.util.concurrent.Executor.execute:(Ljava/lang/Runnable;)V
15: goto 21
StackMap locals:
StackMap stack: java.util.concurrent.RejectedExecutionException
16: astore 5
start local 5 17: aload 0
iconst_1
putfield io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.disposed:Z
18: aload 0
getfield io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.queue:Lio/reactivex/internal/queue/MpscLinkedQueue;
invokevirtual io.reactivex.internal.queue.MpscLinkedQueue.clear:()V
19: aload 5
invokestatic io.reactivex.plugins.RxJavaPlugins.onError:(Ljava/lang/Throwable;)V
20: getstatic io.reactivex.internal.disposables.EmptyDisposable.INSTANCE:Lio/reactivex/internal/disposables/EmptyDisposable;
areturn
end local 5 21: StackMap locals:
StackMap stack:
aload 4
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 this Lio/reactivex/internal/schedulers/ExecutorScheduler$ExecutorWorker;
0 22 1 run Ljava/lang/Runnable;
3 22 2 decoratedRun Ljava/lang/Runnable;
7 9 3 task Ljava/lang/Runnable;
11 22 3 task Ljava/lang/Runnable;
8 9 4 disposable Lio/reactivex/disposables/Disposable;
12 22 4 disposable Lio/reactivex/disposables/Disposable;
5 8 5 interruptibleTask Lio/reactivex/internal/schedulers/ExecutorScheduler$ExecutorWorker$InterruptibleRunnable;
10 12 5 runnableTask Lio/reactivex/internal/schedulers/ExecutorScheduler$ExecutorWorker$BooleanRunnable;
17 21 5 ex Ljava/util/concurrent/RejectedExecutionException;
Exception table:
from to target type
14 15 16 Class java.util.concurrent.RejectedExecutionException
RuntimeInvisibleAnnotations:
io.reactivex.annotations.NonNull()
RuntimeInvisibleParameterAnnotations:
0:
io.reactivex.annotations.NonNull()
MethodParameters:
Name Flags
run
public io.reactivex.disposables.Disposable schedule(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=7, locals=10, args_size=4
start local 0 start local 1 start local 2 start local 4 0: lload 2
lconst_0
lcmp
ifgt 2
1: aload 0
aload 1
invokevirtual io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.schedule:(Ljava/lang/Runnable;)Lio/reactivex/disposables/Disposable;
areturn
2: StackMap locals:
StackMap stack:
aload 0
getfield io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.disposed:Z
ifeq 4
3: getstatic io.reactivex.internal.disposables.EmptyDisposable.INSTANCE:Lio/reactivex/internal/disposables/EmptyDisposable;
areturn
4: StackMap locals:
StackMap stack:
new io.reactivex.internal.disposables.SequentialDisposable
dup
invokespecial io.reactivex.internal.disposables.SequentialDisposable.<init>:()V
astore 5
start local 5 5: new io.reactivex.internal.disposables.SequentialDisposable
dup
aload 5
invokespecial io.reactivex.internal.disposables.SequentialDisposable.<init>:(Lio/reactivex/disposables/Disposable;)V
astore 6
start local 6 6: aload 1
invokestatic io.reactivex.plugins.RxJavaPlugins.onSchedule:(Ljava/lang/Runnable;)Ljava/lang/Runnable;
astore 7
start local 7 7: new io.reactivex.internal.schedulers.ScheduledRunnable
dup
new io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker$SequentialDispose
dup
aload 0
aload 6
aload 7
invokespecial io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker$SequentialDispose.<init>:(Lio/reactivex/internal/schedulers/ExecutorScheduler$ExecutorWorker;Lio/reactivex/internal/disposables/SequentialDisposable;Ljava/lang/Runnable;)V
aload 0
getfield io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.tasks:Lio/reactivex/disposables/CompositeDisposable;
invokespecial io.reactivex.internal.schedulers.ScheduledRunnable.<init>:(Ljava/lang/Runnable;Lio/reactivex/internal/disposables/DisposableContainer;)V
astore 8
start local 8 8: aload 0
getfield io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.tasks:Lio/reactivex/disposables/CompositeDisposable;
aload 8
invokevirtual io.reactivex.disposables.CompositeDisposable.add:(Lio/reactivex/disposables/Disposable;)Z
pop
9: aload 0
getfield io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.executor:Ljava/util/concurrent/Executor;
instanceof java.util.concurrent.ScheduledExecutorService
ifeq 17
10: aload 0
getfield io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.executor:Ljava/util/concurrent/Executor;
checkcast java.util.concurrent.ScheduledExecutorService
aload 8
lload 2
aload 4
invokeinterface java.util.concurrent.ScheduledExecutorService.schedule:(Ljava/util/concurrent/Callable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
astore 9
start local 9 11: aload 8
aload 9
invokevirtual io.reactivex.internal.schedulers.ScheduledRunnable.setFuture:(Ljava/util/concurrent/Future;)V
end local 9 12: goto 19
StackMap locals: io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker java.lang.Runnable long java.util.concurrent.TimeUnit io.reactivex.internal.disposables.SequentialDisposable io.reactivex.internal.disposables.SequentialDisposable java.lang.Runnable io.reactivex.internal.schedulers.ScheduledRunnable
StackMap stack: java.util.concurrent.RejectedExecutionException
13: astore 9
start local 9 14: aload 0
iconst_1
putfield io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.disposed:Z
15: aload 9
invokestatic io.reactivex.plugins.RxJavaPlugins.onError:(Ljava/lang/Throwable;)V
16: getstatic io.reactivex.internal.disposables.EmptyDisposable.INSTANCE:Lio/reactivex/internal/disposables/EmptyDisposable;
areturn
end local 9 17: StackMap locals:
StackMap stack:
getstatic io.reactivex.internal.schedulers.ExecutorScheduler.HELPER:Lio/reactivex/Scheduler;
aload 8
lload 2
aload 4
invokevirtual io.reactivex.Scheduler.scheduleDirect:(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Lio/reactivex/disposables/Disposable;
astore 9
start local 9 18: aload 8
new io.reactivex.internal.schedulers.DisposeOnCancel
dup
aload 9
invokespecial io.reactivex.internal.schedulers.DisposeOnCancel.<init>:(Lio/reactivex/disposables/Disposable;)V
invokevirtual io.reactivex.internal.schedulers.ScheduledRunnable.setFuture:(Ljava/util/concurrent/Future;)V
end local 9 19: StackMap locals:
StackMap stack:
aload 5
aload 8
invokevirtual io.reactivex.internal.disposables.SequentialDisposable.replace:(Lio/reactivex/disposables/Disposable;)Z
pop
20: aload 6
areturn
end local 8 end local 7 end local 6 end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 this Lio/reactivex/internal/schedulers/ExecutorScheduler$ExecutorWorker;
0 21 1 run Ljava/lang/Runnable;
0 21 2 delay J
0 21 4 unit Ljava/util/concurrent/TimeUnit;
5 21 5 first Lio/reactivex/internal/disposables/SequentialDisposable;
6 21 6 mar Lio/reactivex/internal/disposables/SequentialDisposable;
7 21 7 decoratedRun Ljava/lang/Runnable;
8 21 8 sr Lio/reactivex/internal/schedulers/ScheduledRunnable;
11 12 9 f Ljava/util/concurrent/Future<*>;
14 17 9 ex Ljava/util/concurrent/RejectedExecutionException;
18 19 9 d Lio/reactivex/disposables/Disposable;
Exception table:
from to target type
10 12 13 Class java.util.concurrent.RejectedExecutionException
RuntimeInvisibleAnnotations:
io.reactivex.annotations.NonNull()
RuntimeInvisibleParameterAnnotations:
0:
io.reactivex.annotations.NonNull()
1:
2:
io.reactivex.annotations.NonNull()
MethodParameters:
Name Flags
run
delay
unit
public void dispose();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.disposed:Z
ifne 5
1: aload 0
iconst_1
putfield io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.disposed:Z
2: aload 0
getfield io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.tasks:Lio/reactivex/disposables/CompositeDisposable;
invokevirtual io.reactivex.disposables.CompositeDisposable.dispose:()V
3: aload 0
getfield io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.wip:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.getAndIncrement:()I
ifne 5
4: aload 0
getfield io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.queue:Lio/reactivex/internal/queue/MpscLinkedQueue;
invokevirtual io.reactivex.internal.queue.MpscLinkedQueue.clear:()V
5: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lio/reactivex/internal/schedulers/ExecutorScheduler$ExecutorWorker;
public boolean isDisposed();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.disposed:Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/reactivex/internal/schedulers/ExecutorScheduler$ExecutorWorker;
public void run();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=4, args_size=1
start local 0 0: iconst_1
istore 1
start local 1 1: aload 0
getfield io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.queue:Lio/reactivex/internal/queue/MpscLinkedQueue;
astore 2
start local 2 2: StackMap locals: int io.reactivex.internal.queue.MpscLinkedQueue
StackMap stack:
aload 0
getfield io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.disposed:Z
ifeq 5
3: aload 2
invokevirtual io.reactivex.internal.queue.MpscLinkedQueue.clear:()V
4: return
5: StackMap locals:
StackMap stack:
aload 2
invokevirtual io.reactivex.internal.queue.MpscLinkedQueue.poll:()Ljava/lang/Object;
checkcast java.lang.Runnable
astore 3
start local 3 6: aload 3
ifnonnull 8
7: goto 12
8: StackMap locals: java.lang.Runnable
StackMap stack:
aload 3
invokeinterface java.lang.Runnable.run:()V
9: aload 0
getfield io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.disposed:Z
ifeq 5
10: aload 2
invokevirtual io.reactivex.internal.queue.MpscLinkedQueue.clear:()V
11: return
end local 3 12: StackMap locals:
StackMap stack:
aload 0
getfield io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.disposed:Z
ifeq 15
13: aload 2
invokevirtual io.reactivex.internal.queue.MpscLinkedQueue.clear:()V
14: return
15: StackMap locals:
StackMap stack:
aload 0
getfield io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.wip:Ljava/util/concurrent/atomic/AtomicInteger;
iload 1
ineg
invokevirtual java.util.concurrent.atomic.AtomicInteger.addAndGet:(I)I
istore 1
16: iload 1
ifne 2
17: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lio/reactivex/internal/schedulers/ExecutorScheduler$ExecutorWorker;
1 18 1 missed I
2 18 2 q Lio/reactivex/internal/queue/MpscLinkedQueue<Ljava/lang/Runnable;>;
6 12 3 run Ljava/lang/Runnable;
}
SourceFile: "ExecutorScheduler.java"
NestHost: io.reactivex.internal.schedulers.ExecutorScheduler
InnerClasses:
public abstract Worker = io.reactivex.Scheduler$Worker of io.reactivex.Scheduler
public final ExecutorWorker = io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker of io.reactivex.internal.schedulers.ExecutorScheduler
final BooleanRunnable = io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker$BooleanRunnable of io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker
final InterruptibleRunnable = io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker$InterruptibleRunnable of io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker
final SequentialDispose = io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker$SequentialDispose of io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker