final class com.google.common.util.concurrent.SequentialExecutor$QueueWorker implements java.lang.Runnable
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: com.google.common.util.concurrent.SequentialExecutor$QueueWorker
super_class: java.lang.Object
{
final com.google.common.util.concurrent.SequentialExecutor this$0;
descriptor: Lcom/google/common/util/concurrent/SequentialExecutor;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
private void <init>(com.google.common.util.concurrent.SequentialExecutor);
descriptor: (Lcom/google/common/util/concurrent/SequentialExecutor;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 // com.google.common.util.concurrent.SequentialExecutor$QueueWorker this
0: .line 167
aload 0 /* this */
aload 1
putfield com.google.common.util.concurrent.SequentialExecutor$QueueWorker.this$0:Lcom/google/common/util/concurrent/SequentialExecutor;
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
return
end local 0 // com.google.common.util.concurrent.SequentialExecutor$QueueWorker this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/google/common/util/concurrent/SequentialExecutor$QueueWorker;
MethodParameters:
Name Flags
this$0 final
public void run();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=1
start local 0 // com.google.common.util.concurrent.SequentialExecutor$QueueWorker this
0: .line 171
aload 0 /* this */
invokevirtual com.google.common.util.concurrent.SequentialExecutor$QueueWorker.workOnQueue:()V
1: .line 172
goto 10
StackMap locals:
StackMap stack: java.lang.Error
2: astore 1 /* e */
start local 1 // java.lang.Error e
3: .line 173
aload 0 /* this */
getfield com.google.common.util.concurrent.SequentialExecutor$QueueWorker.this$0:Lcom/google/common/util/concurrent/SequentialExecutor;
getfield com.google.common.util.concurrent.SequentialExecutor.queue:Ljava/util/Deque;
dup
astore 2
monitorenter
4: .line 174
aload 0 /* this */
getfield com.google.common.util.concurrent.SequentialExecutor$QueueWorker.this$0:Lcom/google/common/util/concurrent/SequentialExecutor;
getstatic com.google.common.util.concurrent.SequentialExecutor$WorkerRunningState.IDLE:Lcom/google/common/util/concurrent/SequentialExecutor$WorkerRunningState;
putfield com.google.common.util.concurrent.SequentialExecutor.workerRunningState:Lcom/google/common/util/concurrent/SequentialExecutor$WorkerRunningState;
5: .line 173
aload 2
monitorexit
6: goto 9
StackMap locals: com.google.common.util.concurrent.SequentialExecutor$QueueWorker java.lang.Error java.util.Deque
StackMap stack: java.lang.Throwable
7: aload 2
monitorexit
8: athrow
9: .line 176
StackMap locals:
StackMap stack:
aload 1 /* e */
athrow
end local 1 // java.lang.Error e
10: .line 181
StackMap locals:
StackMap stack:
return
end local 0 // com.google.common.util.concurrent.SequentialExecutor$QueueWorker this
LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lcom/google/common/util/concurrent/SequentialExecutor$QueueWorker;
3 10 1 e Ljava/lang/Error;
Exception table:
from to target type
0 1 2 Class java.lang.Error
4 6 7 any
7 8 7 any
private void workOnQueue();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=6, args_size=1
start local 0 // com.google.common.util.concurrent.SequentialExecutor$QueueWorker this
0: .line 195
iconst_0
istore 1 /* interruptedDuringTask */
start local 1 // boolean interruptedDuringTask
1: .line 196
iconst_0
istore 2 /* hasSetRunning */
start local 2 // boolean hasSetRunning
2: .line 200
StackMap locals: int int
StackMap stack:
aload 0 /* this */
getfield com.google.common.util.concurrent.SequentialExecutor$QueueWorker.this$0:Lcom/google/common/util/concurrent/SequentialExecutor;
getfield com.google.common.util.concurrent.SequentialExecutor.queue:Ljava/util/Deque;
dup
astore 4
monitorenter
3: .line 203
iload 2 /* hasSetRunning */
ifne 12
4: .line 204
aload 0 /* this */
getfield com.google.common.util.concurrent.SequentialExecutor$QueueWorker.this$0:Lcom/google/common/util/concurrent/SequentialExecutor;
getfield com.google.common.util.concurrent.SequentialExecutor.workerRunningState:Lcom/google/common/util/concurrent/SequentialExecutor$WorkerRunningState;
getstatic com.google.common.util.concurrent.SequentialExecutor$WorkerRunningState.RUNNING:Lcom/google/common/util/concurrent/SequentialExecutor$WorkerRunningState;
if_acmpne 9
5: .line 206
aload 4
monitorexit
6: .line 236
iload 1 /* interruptedDuringTask */
ifeq 8
7: .line 237
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.interrupt:()V
StackMap locals: com.google.common.util.concurrent.SequentialExecutor$QueueWorker int int top java.util.Deque
StackMap stack:
8: return
9: .line 211
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield com.google.common.util.concurrent.SequentialExecutor$QueueWorker.this$0:Lcom/google/common/util/concurrent/SequentialExecutor;
dup
getfield com.google.common.util.concurrent.SequentialExecutor.workerRunCount:J
lconst_1
ladd
putfield com.google.common.util.concurrent.SequentialExecutor.workerRunCount:J
10: .line 212
aload 0 /* this */
getfield com.google.common.util.concurrent.SequentialExecutor$QueueWorker.this$0:Lcom/google/common/util/concurrent/SequentialExecutor;
getstatic com.google.common.util.concurrent.SequentialExecutor$WorkerRunningState.RUNNING:Lcom/google/common/util/concurrent/SequentialExecutor$WorkerRunningState;
putfield com.google.common.util.concurrent.SequentialExecutor.workerRunningState:Lcom/google/common/util/concurrent/SequentialExecutor$WorkerRunningState;
11: .line 213
iconst_1
istore 2 /* hasSetRunning */
12: .line 216
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield com.google.common.util.concurrent.SequentialExecutor$QueueWorker.this$0:Lcom/google/common/util/concurrent/SequentialExecutor;
getfield com.google.common.util.concurrent.SequentialExecutor.queue:Ljava/util/Deque;
invokeinterface java.util.Deque.poll:()Ljava/lang/Object;
checkcast java.lang.Runnable
astore 3 /* task */
start local 3 // java.lang.Runnable task
13: .line 217
aload 3 /* task */
ifnonnull 19
14: .line 218
aload 0 /* this */
getfield com.google.common.util.concurrent.SequentialExecutor$QueueWorker.this$0:Lcom/google/common/util/concurrent/SequentialExecutor;
getstatic com.google.common.util.concurrent.SequentialExecutor$WorkerRunningState.IDLE:Lcom/google/common/util/concurrent/SequentialExecutor$WorkerRunningState;
putfield com.google.common.util.concurrent.SequentialExecutor.workerRunningState:Lcom/google/common/util/concurrent/SequentialExecutor$WorkerRunningState;
15: .line 219
aload 4
monitorexit
16: .line 236
iload 1 /* interruptedDuringTask */
ifeq 18
17: .line 237
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.interrupt:()V
StackMap locals: com.google.common.util.concurrent.SequentialExecutor$QueueWorker int int java.lang.Runnable java.util.Deque
StackMap stack:
18: return
19: .line 200
StackMap locals:
StackMap stack:
aload 4
monitorexit
20: goto 23
end local 3 // java.lang.Runnable task
StackMap locals: com.google.common.util.concurrent.SequentialExecutor$QueueWorker int int top java.util.Deque
StackMap stack: java.lang.Throwable
21: aload 4
monitorexit
22: athrow
start local 3 // java.lang.Runnable task
23: .line 225
StackMap locals: com.google.common.util.concurrent.SequentialExecutor$QueueWorker int int java.lang.Runnable
StackMap stack:
iload 1 /* interruptedDuringTask */
invokestatic java.lang.Thread.interrupted:()Z
ior
istore 1 /* interruptedDuringTask */
24: .line 227
aload 3 /* task */
invokeinterface java.lang.Runnable.run:()V
25: .line 228
goto 2
StackMap locals:
StackMap stack: java.lang.RuntimeException
26: astore 4 /* e */
start local 4 // java.lang.RuntimeException e
27: .line 229
getstatic com.google.common.util.concurrent.SequentialExecutor.log:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.SEVERE:Ljava/util/logging/Level;
new java.lang.StringBuilder
dup
ldc "Exception while executing runnable "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3 /* task */
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 4 /* e */
invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
end local 4 // java.lang.RuntimeException e
end local 3 // java.lang.Runnable task
28: .line 198
goto 2
29: .line 232
StackMap locals: com.google.common.util.concurrent.SequentialExecutor$QueueWorker int int
StackMap stack: java.lang.Throwable
astore 5
30: .line 236
iload 1 /* interruptedDuringTask */
ifeq 32
31: .line 237
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.interrupt:()V
32: .line 239
StackMap locals: com.google.common.util.concurrent.SequentialExecutor$QueueWorker int int top top java.lang.Throwable
StackMap stack:
aload 5
athrow
end local 2 // boolean hasSetRunning
end local 1 // boolean interruptedDuringTask
end local 0 // com.google.common.util.concurrent.SequentialExecutor$QueueWorker this
LocalVariableTable:
Start End Slot Name Signature
0 33 0 this Lcom/google/common/util/concurrent/SequentialExecutor$QueueWorker;
1 33 1 interruptedDuringTask Z
2 33 2 hasSetRunning Z
13 21 3 task Ljava/lang/Runnable;
23 28 3 task Ljava/lang/Runnable;
27 28 4 e Ljava/lang/RuntimeException;
Exception table:
from to target type
3 6 21 any
9 16 21 any
19 20 21 any
21 22 21 any
24 25 26 Class java.lang.RuntimeException
2 6 29 any
9 16 29 any
19 29 29 any
}
SourceFile: "SequentialExecutor.java"
NestHost: com.google.common.util.concurrent.SequentialExecutor
InnerClasses:
private final QueueWorker = com.google.common.util.concurrent.SequentialExecutor$QueueWorker of com.google.common.util.concurrent.SequentialExecutor
final WorkerRunningState = com.google.common.util.concurrent.SequentialExecutor$WorkerRunningState of com.google.common.util.concurrent.SequentialExecutor