final class com.google.common.util.concurrent.SequentialExecutor implements java.util.concurrent.Executor
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: com.google.common.util.concurrent.SequentialExecutor
super_class: java.lang.Object
{
private static final java.util.logging.Logger log;
descriptor: Ljava/util/logging/Logger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final java.util.concurrent.Executor executor;
descriptor: Ljava/util/concurrent/Executor;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.Deque<java.lang.Runnable> queue;
descriptor: Ljava/util/Deque;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Deque<Ljava/lang/Runnable;>;
RuntimeInvisibleAnnotations:
com.google.errorprone.annotations.concurrent.GuardedBy(value = "queue")
private com.google.common.util.concurrent.SequentialExecutor$WorkerRunningState workerRunningState;
descriptor: Lcom/google/common/util/concurrent/SequentialExecutor$WorkerRunningState;
flags: (0x0002) ACC_PRIVATE
RuntimeInvisibleAnnotations:
com.google.errorprone.annotations.concurrent.GuardedBy(value = "queue")
private long workerRunCount;
descriptor: J
flags: (0x0002) ACC_PRIVATE
RuntimeInvisibleAnnotations:
com.google.errorprone.annotations.concurrent.GuardedBy(value = "queue")
private final com.google.common.util.concurrent.SequentialExecutor$QueueWorker worker;
descriptor: Lcom/google/common/util/concurrent/SequentialExecutor$QueueWorker;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lcom/google/common/util/concurrent/SequentialExecutor;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
invokestatic java.util.logging.Logger.getLogger:(Ljava/lang/String;)Ljava/util/logging/Logger;
putstatic com.google.common.util.concurrent.SequentialExecutor.log:Ljava/util/logging/Logger;
return
LocalVariableTable:
Start End Slot Name Signature
void <init>(java.util.concurrent.Executor);
descriptor: (Ljava/util/concurrent/Executor;)V
flags: (0x0000)
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.util.ArrayDeque
dup
invokespecial java.util.ArrayDeque.<init>:()V
putfield com.google.common.util.concurrent.SequentialExecutor.queue:Ljava/util/Deque;
2: aload 0
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;
3: aload 0
lconst_0
putfield com.google.common.util.concurrent.SequentialExecutor.workerRunCount:J
4: aload 0
new com.google.common.util.concurrent.SequentialExecutor$QueueWorker
dup
aload 0
invokespecial com.google.common.util.concurrent.SequentialExecutor$QueueWorker.<init>:(Lcom/google/common/util/concurrent/SequentialExecutor;)V
putfield com.google.common.util.concurrent.SequentialExecutor.worker:Lcom/google/common/util/concurrent/SequentialExecutor$QueueWorker;
5: aload 0
aload 1
invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.concurrent.Executor
putfield com.google.common.util.concurrent.SequentialExecutor.executor:Ljava/util/concurrent/Executor;
6: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lcom/google/common/util/concurrent/SequentialExecutor;
0 7 1 executor Ljava/util/concurrent/Executor;
MethodParameters:
Name Flags
executor
public void execute(java.lang.Runnable);
descriptor: (Ljava/lang/Runnable;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=8, args_size=2
start local 0 start local 1 0: aload 1
invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
pop
1: aload 0
getfield com.google.common.util.concurrent.SequentialExecutor.queue:Ljava/util/Deque;
dup
astore 5
monitorenter
2: aload 0
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_acmpeq 3
aload 0
getfield com.google.common.util.concurrent.SequentialExecutor.workerRunningState:Lcom/google/common/util/concurrent/SequentialExecutor$WorkerRunningState;
getstatic com.google.common.util.concurrent.SequentialExecutor$WorkerRunningState.QUEUED:Lcom/google/common/util/concurrent/SequentialExecutor$WorkerRunningState;
if_acmpne 6
3: StackMap locals: com.google.common.util.concurrent.SequentialExecutor java.lang.Runnable top top top java.util.Deque
StackMap stack:
aload 0
getfield com.google.common.util.concurrent.SequentialExecutor.queue:Ljava/util/Deque;
aload 1
invokeinterface java.util.Deque.add:(Ljava/lang/Object;)Z
pop
4: aload 5
monitorexit
5: return
6: StackMap locals:
StackMap stack:
aload 0
getfield com.google.common.util.concurrent.SequentialExecutor.workerRunCount:J
lstore 3
start local 3 7: new com.google.common.util.concurrent.SequentialExecutor$1
dup
aload 0
aload 1
invokespecial com.google.common.util.concurrent.SequentialExecutor$1.<init>:(Lcom/google/common/util/concurrent/SequentialExecutor;Ljava/lang/Runnable;)V
8: astore 2
start local 2 9: aload 0
getfield com.google.common.util.concurrent.SequentialExecutor.queue:Ljava/util/Deque;
aload 2
invokeinterface java.util.Deque.add:(Ljava/lang/Object;)Z
pop
10: aload 0
getstatic com.google.common.util.concurrent.SequentialExecutor$WorkerRunningState.QUEUING:Lcom/google/common/util/concurrent/SequentialExecutor$WorkerRunningState;
putfield com.google.common.util.concurrent.SequentialExecutor.workerRunningState:Lcom/google/common/util/concurrent/SequentialExecutor$WorkerRunningState;
11: aload 5
monitorexit
12: goto 15
end local 3 end local 2 StackMap locals:
StackMap stack: java.lang.Throwable
13: aload 5
monitorexit
14: athrow
start local 2 start local 3 15: StackMap locals: com.google.common.util.concurrent.SequentialExecutor java.lang.Runnable java.lang.Runnable long
StackMap stack:
aload 0
getfield com.google.common.util.concurrent.SequentialExecutor.executor:Ljava/util/concurrent/Executor;
aload 0
getfield com.google.common.util.concurrent.SequentialExecutor.worker:Lcom/google/common/util/concurrent/SequentialExecutor$QueueWorker;
invokeinterface java.util.concurrent.Executor.execute:(Ljava/lang/Runnable;)V
16: goto 31
StackMap locals:
StackMap stack: java.lang.Throwable
17: astore 5
start local 5 18: aload 0
getfield com.google.common.util.concurrent.SequentialExecutor.queue:Ljava/util/Deque;
dup
astore 6
monitorenter
19: aload 0
getfield com.google.common.util.concurrent.SequentialExecutor.workerRunningState:Lcom/google/common/util/concurrent/SequentialExecutor$WorkerRunningState;
getstatic com.google.common.util.concurrent.SequentialExecutor$WorkerRunningState.IDLE:Lcom/google/common/util/concurrent/SequentialExecutor$WorkerRunningState;
if_acmpeq 20
aload 0
getfield com.google.common.util.concurrent.SequentialExecutor.workerRunningState:Lcom/google/common/util/concurrent/SequentialExecutor$WorkerRunningState;
getstatic com.google.common.util.concurrent.SequentialExecutor$WorkerRunningState.QUEUING:Lcom/google/common/util/concurrent/SequentialExecutor$WorkerRunningState;
if_acmpne 22
20: StackMap locals: java.lang.Throwable java.util.Deque
StackMap stack:
aload 0
getfield com.google.common.util.concurrent.SequentialExecutor.queue:Ljava/util/Deque;
aload 2
invokeinterface java.util.Deque.removeLastOccurrence:(Ljava/lang/Object;)Z
ifeq 22
21: iconst_1
goto 23
StackMap locals:
StackMap stack:
22: iconst_0
StackMap locals:
StackMap stack: int
23: istore 7
start local 7 24: aload 5
instanceof java.util.concurrent.RejectedExecutionException
ifeq 25
iload 7
ifeq 26
25: StackMap locals: int
StackMap stack:
aload 5
athrow
end local 7 26: StackMap locals:
StackMap stack:
aload 6
monitorexit
27: goto 30
StackMap locals:
StackMap stack: java.lang.Throwable
28: aload 6
monitorexit
29: athrow
30: StackMap locals:
StackMap stack:
return
end local 5 31: StackMap locals:
StackMap stack:
aload 0
getfield com.google.common.util.concurrent.SequentialExecutor.workerRunningState:Lcom/google/common/util/concurrent/SequentialExecutor$WorkerRunningState;
getstatic com.google.common.util.concurrent.SequentialExecutor$WorkerRunningState.QUEUING:Lcom/google/common/util/concurrent/SequentialExecutor$WorkerRunningState;
if_acmpeq 32
iconst_1
goto 33
StackMap locals:
StackMap stack:
32: iconst_0
StackMap locals:
StackMap stack: int
33: istore 5
start local 5 34: iload 5
ifeq 36
35: return
36: StackMap locals: int
StackMap stack:
aload 0
getfield com.google.common.util.concurrent.SequentialExecutor.queue:Ljava/util/Deque;
dup
astore 6
monitorenter
37: aload 0
getfield com.google.common.util.concurrent.SequentialExecutor.workerRunCount:J
lload 3
lcmp
ifne 39
aload 0
getfield com.google.common.util.concurrent.SequentialExecutor.workerRunningState:Lcom/google/common/util/concurrent/SequentialExecutor$WorkerRunningState;
getstatic com.google.common.util.concurrent.SequentialExecutor$WorkerRunningState.QUEUING:Lcom/google/common/util/concurrent/SequentialExecutor$WorkerRunningState;
if_acmpne 39
38: aload 0
getstatic com.google.common.util.concurrent.SequentialExecutor$WorkerRunningState.QUEUED:Lcom/google/common/util/concurrent/SequentialExecutor$WorkerRunningState;
putfield com.google.common.util.concurrent.SequentialExecutor.workerRunningState:Lcom/google/common/util/concurrent/SequentialExecutor$WorkerRunningState;
39: StackMap locals: java.util.Deque
StackMap stack:
aload 6
monitorexit
40: goto 43
StackMap locals:
StackMap stack: java.lang.Throwable
41: aload 6
monitorexit
42: athrow
43: StackMap locals:
StackMap stack:
return
end local 5 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 44 0 this Lcom/google/common/util/concurrent/SequentialExecutor;
0 44 1 task Ljava/lang/Runnable;
9 13 2 submittedTask Ljava/lang/Runnable;
15 44 2 submittedTask Ljava/lang/Runnable;
7 13 3 oldRunCount J
15 44 3 oldRunCount J
18 31 5 t Ljava/lang/Throwable;
24 26 7 removed Z
34 44 5 alreadyMarkedQueued Z
Exception table:
from to target type
2 5 13 any
6 12 13 any
13 14 13 any
15 16 17 Class java.lang.RuntimeException
15 16 17 Class java.lang.Error
19 27 28 any
28 29 28 any
37 40 41 any
41 42 41 any
MethodParameters:
Name Flags
task final
}
SourceFile: "SequentialExecutor.java"
NestMembers:
com.google.common.util.concurrent.SequentialExecutor$1 com.google.common.util.concurrent.SequentialExecutor$QueueWorker com.google.common.util.concurrent.SequentialExecutor$WorkerRunningState
InnerClasses:
com.google.common.util.concurrent.SequentialExecutor$1
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
RuntimeInvisibleAnnotations:
com.google.common.annotations.GwtIncompatible()