public class java.util.concurrent.ThreadPoolExecutor extends java.util.concurrent.AbstractExecutorService
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: java.util.concurrent.ThreadPoolExecutor
super_class: java.util.concurrent.AbstractExecutorService
{
private final java.util.concurrent.atomic.AtomicInteger ctl;
descriptor: Ljava/util/concurrent/atomic/AtomicInteger;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private static final int COUNT_BITS;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 29
private static final int COUNT_MASK;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 536870911
private static final int RUNNING;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: -536870912
private static final int SHUTDOWN;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 0
private static final int STOP;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 536870912
private static final int TIDYING;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1073741824
private static final int TERMINATED;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1610612736
private final java.util.concurrent.BlockingQueue<java.lang.Runnable> workQueue;
descriptor: Ljava/util/concurrent/BlockingQueue;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/concurrent/BlockingQueue<Ljava/lang/Runnable;>;
private final java.util.concurrent.locks.ReentrantLock mainLock;
descriptor: Ljava/util/concurrent/locks/ReentrantLock;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.HashSet<java.util.concurrent.ThreadPoolExecutor$Worker> workers;
descriptor: Ljava/util/HashSet;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/HashSet<Ljava/util/concurrent/ThreadPoolExecutor$Worker;>;
private final java.util.concurrent.locks.Condition termination;
descriptor: Ljava/util/concurrent/locks/Condition;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private int largestPoolSize;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private long completedTaskCount;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private volatile java.util.concurrent.ThreadFactory threadFactory;
descriptor: Ljava/util/concurrent/ThreadFactory;
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private volatile java.util.concurrent.RejectedExecutionHandler handler;
descriptor: Ljava/util/concurrent/RejectedExecutionHandler;
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private volatile long keepAliveTime;
descriptor: J
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private volatile boolean allowCoreThreadTimeOut;
descriptor: Z
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private volatile int corePoolSize;
descriptor: I
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private volatile int maximumPoolSize;
descriptor: I
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private static final java.util.concurrent.RejectedExecutionHandler defaultHandler;
descriptor: Ljava/util/concurrent/RejectedExecutionHandler;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.lang.RuntimePermission shutdownPerm;
descriptor: Ljava/lang/RuntimePermission;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final boolean ONLY_ONE;
descriptor: Z
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=0, args_size=0
0: new java.util.concurrent.ThreadPoolExecutor$AbortPolicy
dup
invokespecial java.util.concurrent.ThreadPoolExecutor$AbortPolicy.<init>:()V
1: putstatic java.util.concurrent.ThreadPoolExecutor.defaultHandler:Ljava/util/concurrent/RejectedExecutionHandler;
2: new java.lang.RuntimePermission
dup
ldc "modifyThread"
invokespecial java.lang.RuntimePermission.<init>:(Ljava/lang/String;)V
3: putstatic java.util.concurrent.ThreadPoolExecutor.shutdownPerm:Ljava/lang/RuntimePermission;
4: return
LocalVariableTable:
Start End Slot Name Signature
private static int runStateOf(int);
descriptor: (I)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: iload 0
ldc -536870912
iand
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 c I
MethodParameters:
Name Flags
c
private static int workerCountOf(int);
descriptor: (I)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: iload 0
ldc 536870911
iand
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 c I
MethodParameters:
Name Flags
c
private static int ctlOf(int, int);
descriptor: (II)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: iload 0
iload 1
ior
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 rs I
0 1 1 wc I
MethodParameters:
Name Flags
rs
wc
private static boolean runStateLessThan(int, int);
descriptor: (II)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: iload 0
iload 1
if_icmpge 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 c I
0 2 1 s I
MethodParameters:
Name Flags
c
s
private static boolean runStateAtLeast(int, int);
descriptor: (II)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: iload 0
iload 1
if_icmplt 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 c I
0 2 1 s I
MethodParameters:
Name Flags
c
s
private static boolean isRunning(int);
descriptor: (I)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: iload 0
ifge 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 c I
MethodParameters:
Name Flags
c
private boolean compareAndIncrementWorkerCount(int);
descriptor: (I)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.ctl:Ljava/util/concurrent/atomic/AtomicInteger;
iload 1
iload 1
iconst_1
iadd
invokevirtual java.util.concurrent.atomic.AtomicInteger.compareAndSet:(II)Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/concurrent/ThreadPoolExecutor;
0 1 1 expect I
MethodParameters:
Name Flags
expect
private boolean compareAndDecrementWorkerCount(int);
descriptor: (I)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.ctl:Ljava/util/concurrent/atomic/AtomicInteger;
iload 1
iload 1
iconst_1
isub
invokevirtual java.util.concurrent.atomic.AtomicInteger.compareAndSet:(II)Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/concurrent/ThreadPoolExecutor;
0 1 1 expect I
MethodParameters:
Name Flags
expect
private void decrementWorkerCount();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.ctl:Ljava/util/concurrent/atomic/AtomicInteger;
iconst_m1
invokevirtual java.util.concurrent.atomic.AtomicInteger.addAndGet:(I)I
pop
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/util/concurrent/ThreadPoolExecutor;
private void advanceRunState(int);
descriptor: (I)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.ctl:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
istore 2
start local 2 1: iload 2
iload 1
invokestatic java.util.concurrent.ThreadPoolExecutor.runStateAtLeast:(II)Z
ifne 3
2: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.ctl:Ljava/util/concurrent/atomic/AtomicInteger;
iload 2
iload 1
iload 2
invokestatic java.util.concurrent.ThreadPoolExecutor.workerCountOf:(I)I
invokestatic java.util.concurrent.ThreadPoolExecutor.ctlOf:(II)I
invokevirtual java.util.concurrent.atomic.AtomicInteger.compareAndSet:(II)Z
ifeq 0
end local 2 3: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljava/util/concurrent/ThreadPoolExecutor;
0 4 1 targetState I
1 3 2 c I
MethodParameters:
Name Flags
targetState
final void tryTerminate();
descriptor: ()V
flags: (0x0010) ACC_FINAL
Code:
stack=4, locals=5, args_size=1
start local 0 0: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.ctl:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
istore 1
start local 1 1: iload 1
invokestatic java.util.concurrent.ThreadPoolExecutor.isRunning:(I)Z
ifne 4
2: iload 1
ldc 1073741824
invokestatic java.util.concurrent.ThreadPoolExecutor.runStateAtLeast:(II)Z
ifne 4
3: iload 1
ldc 536870912
invokestatic java.util.concurrent.ThreadPoolExecutor.runStateLessThan:(II)Z
ifeq 5
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.workQueue:Ljava/util/concurrent/BlockingQueue;
invokeinterface java.util.concurrent.BlockingQueue.isEmpty:()Z
ifne 5
4: StackMap locals: int
StackMap stack:
return
5: StackMap locals:
StackMap stack:
iload 1
invokestatic java.util.concurrent.ThreadPoolExecutor.workerCountOf:(I)I
ifeq 8
6: aload 0
iconst_1
invokevirtual java.util.concurrent.ThreadPoolExecutor.interruptIdleWorkers:(Z)V
7: return
8: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.mainLock:Ljava/util/concurrent/locks/ReentrantLock;
astore 2
start local 2 9: aload 2
invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
10: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.ctl:Ljava/util/concurrent/atomic/AtomicInteger;
iload 1
ldc 1073741824
iconst_0
invokestatic java.util.concurrent.ThreadPoolExecutor.ctlOf:(II)I
invokevirtual java.util.concurrent.atomic.AtomicInteger.compareAndSet:(II)Z
ifeq 24
11: aload 0
invokevirtual java.util.concurrent.ThreadPoolExecutor.terminated:()V
12: goto 17
StackMap locals: java.util.concurrent.ThreadPoolExecutor int java.util.concurrent.locks.ReentrantLock
StackMap stack: java.lang.Throwable
13: astore 3
14: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.ctl:Ljava/util/concurrent/atomic/AtomicInteger;
ldc 1610612736
iconst_0
invokestatic java.util.concurrent.ThreadPoolExecutor.ctlOf:(II)I
invokevirtual java.util.concurrent.atomic.AtomicInteger.set:(I)V
15: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.termination:Ljava/util/concurrent/locks/Condition;
invokeinterface java.util.concurrent.locks.Condition.signalAll:()V
16: aload 3
athrow
17: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.ctl:Ljava/util/concurrent/atomic/AtomicInteger;
ldc 1610612736
iconst_0
invokestatic java.util.concurrent.ThreadPoolExecutor.ctlOf:(II)I
invokevirtual java.util.concurrent.atomic.AtomicInteger.set:(I)V
18: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.termination:Ljava/util/concurrent/locks/Condition;
invokeinterface java.util.concurrent.locks.Condition.signalAll:()V
19: aload 2
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
20: return
21: StackMap locals:
StackMap stack: java.lang.Throwable
astore 4
22: aload 2
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
23: aload 4
athrow
24: StackMap locals:
StackMap stack:
aload 2
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
end local 2 end local 1 25: goto 0
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 26 0 this Ljava/util/concurrent/ThreadPoolExecutor;
1 25 1 c I
9 25 2 mainLock Ljava/util/concurrent/locks/ReentrantLock;
Exception table:
from to target type
11 13 13 any
10 19 21 any
private void checkShutdownAccess();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=4, args_size=1
start local 0 0: invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
astore 1
start local 1 1: aload 1
ifnull 7
2: aload 1
getstatic java.util.concurrent.ThreadPoolExecutor.shutdownPerm:Ljava/lang/RuntimePermission;
invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;)V
3: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.workers:Ljava/util/HashSet;
invokevirtual java.util.HashSet.iterator:()Ljava/util/Iterator;
astore 3
goto 6
StackMap locals: java.util.concurrent.ThreadPoolExecutor java.lang.SecurityManager top java.util.Iterator
StackMap stack:
4: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.util.concurrent.ThreadPoolExecutor$Worker
astore 2
start local 2 5: aload 1
aload 2
getfield java.util.concurrent.ThreadPoolExecutor$Worker.thread:Ljava/lang/Thread;
invokevirtual java.lang.SecurityManager.checkAccess:(Ljava/lang/Thread;)V
end local 2 6: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 4
7: StackMap locals: java.util.concurrent.ThreadPoolExecutor java.lang.SecurityManager
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Ljava/util/concurrent/ThreadPoolExecutor;
1 8 1 security Ljava/lang/SecurityManager;
5 6 2 w Ljava/util/concurrent/ThreadPoolExecutor$Worker;
private void interruptWorkers();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=3, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.workers:Ljava/util/HashSet;
invokevirtual java.util.HashSet.iterator:()Ljava/util/Iterator;
astore 2
goto 3
StackMap locals: java.util.concurrent.ThreadPoolExecutor top java.util.Iterator
StackMap stack:
1: aload 2
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.util.concurrent.ThreadPoolExecutor$Worker
astore 1
start local 1 2: aload 1
invokevirtual java.util.concurrent.ThreadPoolExecutor$Worker.interruptIfStarted:()V
end local 1 3: StackMap locals:
StackMap stack:
aload 2
invokeinterface java.util.Iterator.hasNext:()Z
ifne 1
4: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljava/util/concurrent/ThreadPoolExecutor;
2 3 1 w Ljava/util/concurrent/ThreadPoolExecutor$Worker;
private void interruptIdleWorkers(boolean);
descriptor: (Z)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=8, args_size=2
start local 0 start local 1 0: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.mainLock:Ljava/util/concurrent/locks/ReentrantLock;
astore 2
start local 2 1: aload 2
invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
2: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.workers:Ljava/util/HashSet;
invokevirtual java.util.HashSet.iterator:()Ljava/util/Iterator;
astore 4
goto 16
StackMap locals: java.util.concurrent.ThreadPoolExecutor int java.util.concurrent.locks.ReentrantLock top java.util.Iterator
StackMap stack:
3: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.util.concurrent.ThreadPoolExecutor$Worker
astore 3
start local 3 4: aload 3
getfield java.util.concurrent.ThreadPoolExecutor$Worker.thread:Ljava/lang/Thread;
astore 5
start local 5 5: aload 5
invokevirtual java.lang.Thread.isInterrupted:()Z
ifne 14
aload 3
invokevirtual java.util.concurrent.ThreadPoolExecutor$Worker.tryLock:()Z
ifeq 14
6: aload 5
invokevirtual java.lang.Thread.interrupt:()V
7: goto 13
StackMap locals: java.util.concurrent.ThreadPoolExecutor int java.util.concurrent.locks.ReentrantLock java.util.concurrent.ThreadPoolExecutor$Worker java.util.Iterator java.lang.Thread
StackMap stack: java.lang.SecurityException
8: pop
9: aload 3
invokevirtual java.util.concurrent.ThreadPoolExecutor$Worker.unlock:()V
goto 14
10: StackMap locals:
StackMap stack: java.lang.Throwable
astore 6
11: aload 3
invokevirtual java.util.concurrent.ThreadPoolExecutor$Worker.unlock:()V
12: aload 6
athrow
13: StackMap locals:
StackMap stack:
aload 3
invokevirtual java.util.concurrent.ThreadPoolExecutor$Worker.unlock:()V
14: StackMap locals:
StackMap stack:
iload 1
ifeq 16
15: goto 21
end local 5 end local 3 16: StackMap locals: java.util.concurrent.ThreadPoolExecutor int java.util.concurrent.locks.ReentrantLock top java.util.Iterator
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 3
17: goto 21
StackMap locals: java.util.concurrent.ThreadPoolExecutor int java.util.concurrent.locks.ReentrantLock
StackMap stack: java.lang.Throwable
18: astore 7
19: aload 2
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
20: aload 7
athrow
21: StackMap locals:
StackMap stack:
aload 2
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
22: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 23 0 this Ljava/util/concurrent/ThreadPoolExecutor;
0 23 1 onlyOne Z
1 23 2 mainLock Ljava/util/concurrent/locks/ReentrantLock;
4 16 3 w Ljava/util/concurrent/ThreadPoolExecutor$Worker;
5 16 5 t Ljava/lang/Thread;
Exception table:
from to target type
6 7 8 Class java.lang.SecurityException
6 9 10 any
2 18 18 any
MethodParameters:
Name Flags
onlyOne
private void interruptIdleWorkers();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
iconst_0
invokevirtual java.util.concurrent.ThreadPoolExecutor.interruptIdleWorkers:(Z)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/util/concurrent/ThreadPoolExecutor;
final void reject(java.lang.Runnable);
descriptor: (Ljava/lang/Runnable;)V
flags: (0x0010) ACC_FINAL
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.handler:Ljava/util/concurrent/RejectedExecutionHandler;
aload 1
aload 0
invokeinterface java.util.concurrent.RejectedExecutionHandler.rejectedExecution:(Ljava/lang/Runnable;Ljava/util/concurrent/ThreadPoolExecutor;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/util/concurrent/ThreadPoolExecutor;
0 2 1 command Ljava/lang/Runnable;
MethodParameters:
Name Flags
command
void onShutdown();
descriptor: ()V
flags: (0x0000)
Code:
stack=0, locals=1, args_size=1
start local 0 0: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/concurrent/ThreadPoolExecutor;
private java.util.List<java.lang.Runnable> drainQueue();
descriptor: ()Ljava/util/List;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=7, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.workQueue:Ljava/util/concurrent/BlockingQueue;
astore 1
start local 1 1: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 2
start local 2 2: aload 1
aload 2
invokeinterface java.util.concurrent.BlockingQueue.drainTo:(Ljava/util/Collection;)I
pop
3: aload 1
invokeinterface java.util.concurrent.BlockingQueue.isEmpty:()Z
ifne 10
4: aload 1
iconst_0
anewarray java.lang.Runnable
invokeinterface java.util.concurrent.BlockingQueue.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
checkcast java.lang.Runnable[]
dup
astore 6
arraylength
istore 5
iconst_0
istore 4
goto 9
StackMap locals: java.util.concurrent.ThreadPoolExecutor java.util.concurrent.BlockingQueue java.util.ArrayList top int int java.lang.Runnable[]
StackMap stack:
5: aload 6
iload 4
aaload
astore 3
start local 3 6: aload 1
aload 3
invokeinterface java.util.concurrent.BlockingQueue.remove:(Ljava/lang/Object;)Z
ifeq 8
7: aload 2
aload 3
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
end local 3 8: StackMap locals:
StackMap stack:
iinc 4 1
StackMap locals:
StackMap stack:
9: iload 4
iload 5
if_icmplt 5
10: StackMap locals: java.util.concurrent.ThreadPoolExecutor java.util.concurrent.BlockingQueue java.util.ArrayList
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Ljava/util/concurrent/ThreadPoolExecutor;
1 11 1 q Ljava/util/concurrent/BlockingQueue<Ljava/lang/Runnable;>;
2 11 2 taskList Ljava/util/ArrayList<Ljava/lang/Runnable;>;
6 8 3 r Ljava/lang/Runnable;
Signature: ()Ljava/util/List<Ljava/lang/Runnable;>;
private boolean addWorker(java.lang.Runnable, boolean);
descriptor: (Ljava/lang/Runnable;Z)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=12, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.ctl:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
istore 3
start local 3 1: StackMap locals: int
StackMap stack:
iload 3
iconst_0
invokestatic java.util.concurrent.ThreadPoolExecutor.runStateAtLeast:(II)Z
ifeq 6
2: iload 3
ldc 536870912
invokestatic java.util.concurrent.ThreadPoolExecutor.runStateAtLeast:(II)Z
ifne 5
3: aload 1
ifnonnull 5
4: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.workQueue:Ljava/util/concurrent/BlockingQueue;
invokeinterface java.util.concurrent.BlockingQueue.isEmpty:()Z
ifeq 6
5: StackMap locals:
StackMap stack:
iconst_0
ireturn
6: StackMap locals:
StackMap stack:
iload 3
invokestatic java.util.concurrent.ThreadPoolExecutor.workerCountOf:(I)I
7: iload 2
ifeq 8
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.corePoolSize:I
goto 9
StackMap locals:
StackMap stack: int
8: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.maximumPoolSize:I
StackMap locals: java.util.concurrent.ThreadPoolExecutor java.lang.Runnable int int
StackMap stack: int int
9: ldc 536870911
iand
if_icmplt 11
10: iconst_0
ireturn
11: StackMap locals:
StackMap stack:
aload 0
iload 3
invokevirtual java.util.concurrent.ThreadPoolExecutor.compareAndIncrementWorkerCount:(I)Z
ifeq 13
12: goto 16
13: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.ctl:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
istore 3
14: iload 3
iconst_0
invokestatic java.util.concurrent.ThreadPoolExecutor.runStateAtLeast:(II)Z
ifeq 6
15: goto 1
end local 3 16: StackMap locals:
StackMap stack:
iconst_0
istore 3
start local 3 17: iconst_0
istore 4
start local 4 18: aconst_null
astore 5
start local 5 19: new java.util.concurrent.ThreadPoolExecutor$Worker
dup
aload 0
aload 1
invokespecial java.util.concurrent.ThreadPoolExecutor$Worker.<init>:(Ljava/util/concurrent/ThreadPoolExecutor;Ljava/lang/Runnable;)V
astore 5
20: aload 5
getfield java.util.concurrent.ThreadPoolExecutor$Worker.thread:Ljava/lang/Thread;
astore 6
start local 6 21: aload 6
ifnull 47
22: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.mainLock:Ljava/util/concurrent/locks/ReentrantLock;
astore 7
start local 7 23: aload 7
invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
24: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.ctl:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
istore 8
start local 8 25: iload 8
invokestatic java.util.concurrent.ThreadPoolExecutor.isRunning:(I)Z
ifne 27
26: iload 8
ldc 536870912
invokestatic java.util.concurrent.ThreadPoolExecutor.runStateLessThan:(II)Z
ifeq 38
aload 1
ifnonnull 38
27: StackMap locals: java.util.concurrent.ThreadPoolExecutor java.lang.Runnable int int int java.util.concurrent.ThreadPoolExecutor$Worker java.lang.Thread java.util.concurrent.locks.ReentrantLock int
StackMap stack:
aload 6
invokevirtual java.lang.Thread.getState:()Ljava/lang/Thread$State;
getstatic java.lang.Thread$State.NEW:Ljava/lang/Thread$State;
if_acmpeq 29
28: new java.lang.IllegalThreadStateException
dup
invokespecial java.lang.IllegalThreadStateException.<init>:()V
athrow
29: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.workers:Ljava/util/HashSet;
aload 5
invokevirtual java.util.HashSet.add:(Ljava/lang/Object;)Z
pop
30: iconst_1
istore 4
31: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.workers:Ljava/util/HashSet;
invokevirtual java.util.HashSet.size:()I
istore 9
start local 9 32: iload 9
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.largestPoolSize:I
if_icmple 38
33: aload 0
iload 9
putfield java.util.concurrent.ThreadPoolExecutor.largestPoolSize:I
end local 9 end local 8 34: goto 38
StackMap locals: java.util.concurrent.ThreadPoolExecutor java.lang.Runnable int int int java.util.concurrent.ThreadPoolExecutor$Worker java.lang.Thread java.util.concurrent.locks.ReentrantLock
StackMap stack: java.lang.Throwable
35: astore 10
36: aload 7
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
37: aload 10
athrow
38: StackMap locals:
StackMap stack:
aload 7
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
39: iload 4
ifeq 47
40: aload 6
invokevirtual java.lang.Thread.start:()V
41: iconst_1
istore 3
end local 7 end local 6 42: goto 47
StackMap locals: java.util.concurrent.ThreadPoolExecutor java.lang.Runnable int int int java.util.concurrent.ThreadPoolExecutor$Worker
StackMap stack: java.lang.Throwable
43: astore 11
44: iload 3
ifne 46
45: aload 0
aload 5
invokevirtual java.util.concurrent.ThreadPoolExecutor.addWorkerFailed:(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V
46: StackMap locals: java.util.concurrent.ThreadPoolExecutor java.lang.Runnable int int int java.util.concurrent.ThreadPoolExecutor$Worker top top top top top java.lang.Throwable
StackMap stack:
aload 11
athrow
47: StackMap locals: java.util.concurrent.ThreadPoolExecutor java.lang.Runnable int int int java.util.concurrent.ThreadPoolExecutor$Worker
StackMap stack:
iload 3
ifne 49
48: aload 0
aload 5
invokevirtual java.util.concurrent.ThreadPoolExecutor.addWorkerFailed:(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V
49: StackMap locals:
StackMap stack:
iload 3
ireturn
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 50 0 this Ljava/util/concurrent/ThreadPoolExecutor;
0 50 1 firstTask Ljava/lang/Runnable;
0 50 2 core Z
1 16 3 c I
17 50 3 workerStarted Z
18 50 4 workerAdded Z
19 50 5 w Ljava/util/concurrent/ThreadPoolExecutor$Worker;
21 42 6 t Ljava/lang/Thread;
23 42 7 mainLock Ljava/util/concurrent/locks/ReentrantLock;
25 34 8 c I
32 34 9 s I
Exception table:
from to target type
24 35 35 any
19 43 43 any
MethodParameters:
Name Flags
firstTask
core
private void addWorkerFailed(java.util.concurrent.ThreadPoolExecutor$Worker);
descriptor: (Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=4, args_size=2
start local 0 start local 1 0: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.mainLock:Ljava/util/concurrent/locks/ReentrantLock;
astore 2
start local 2 1: aload 2
invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
2: aload 1
ifnull 4
3: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.workers:Ljava/util/HashSet;
aload 1
invokevirtual java.util.HashSet.remove:(Ljava/lang/Object;)Z
pop
4: StackMap locals: java.util.concurrent.locks.ReentrantLock
StackMap stack:
aload 0
invokevirtual java.util.concurrent.ThreadPoolExecutor.decrementWorkerCount:()V
5: aload 0
invokevirtual java.util.concurrent.ThreadPoolExecutor.tryTerminate:()V
6: goto 10
StackMap locals:
StackMap stack: java.lang.Throwable
7: astore 3
8: aload 2
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
9: aload 3
athrow
10: StackMap locals:
StackMap stack:
aload 2
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
11: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Ljava/util/concurrent/ThreadPoolExecutor;
0 12 1 w Ljava/util/concurrent/ThreadPoolExecutor$Worker;
1 12 2 mainLock Ljava/util/concurrent/locks/ReentrantLock;
Exception table:
from to target type
2 7 7 any
MethodParameters:
Name Flags
w
private void processWorkerExit(java.util.concurrent.ThreadPoolExecutor$Worker, boolean);
descriptor: (Ljava/util/concurrent/ThreadPoolExecutor$Worker;Z)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=6, args_size=3
start local 0 start local 1 start local 2 0: iload 2
ifeq 2
1: aload 0
invokevirtual java.util.concurrent.ThreadPoolExecutor.decrementWorkerCount:()V
2: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.mainLock:Ljava/util/concurrent/locks/ReentrantLock;
astore 3
start local 3 3: aload 3
invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
4: aload 0
dup
getfield java.util.concurrent.ThreadPoolExecutor.completedTaskCount:J
aload 1
getfield java.util.concurrent.ThreadPoolExecutor$Worker.completedTasks:J
ladd
putfield java.util.concurrent.ThreadPoolExecutor.completedTaskCount:J
5: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.workers:Ljava/util/HashSet;
aload 1
invokevirtual java.util.HashSet.remove:(Ljava/lang/Object;)Z
pop
6: goto 10
StackMap locals: java.util.concurrent.ThreadPoolExecutor java.util.concurrent.ThreadPoolExecutor$Worker int java.util.concurrent.locks.ReentrantLock
StackMap stack: java.lang.Throwable
7: astore 4
8: aload 3
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
9: aload 4
athrow
10: StackMap locals:
StackMap stack:
aload 3
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
11: aload 0
invokevirtual java.util.concurrent.ThreadPoolExecutor.tryTerminate:()V
12: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.ctl:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
istore 4
start local 4 13: iload 4
ldc 536870912
invokestatic java.util.concurrent.ThreadPoolExecutor.runStateLessThan:(II)Z
ifeq 23
14: iload 2
ifne 22
15: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.allowCoreThreadTimeOut:Z
ifeq 16
iconst_0
goto 17
StackMap locals: int
StackMap stack:
16: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.corePoolSize:I
StackMap locals:
StackMap stack: int
17: istore 5
start local 5 18: iload 5
ifne 20
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.workQueue:Ljava/util/concurrent/BlockingQueue;
invokeinterface java.util.concurrent.BlockingQueue.isEmpty:()Z
ifne 20
19: iconst_1
istore 5
20: StackMap locals: int
StackMap stack:
iload 4
invokestatic java.util.concurrent.ThreadPoolExecutor.workerCountOf:(I)I
iload 5
if_icmplt 22
21: return
end local 5 22: StackMap locals:
StackMap stack:
aload 0
aconst_null
iconst_0
invokevirtual java.util.concurrent.ThreadPoolExecutor.addWorker:(Ljava/lang/Runnable;Z)Z
pop
23: StackMap locals:
StackMap stack:
return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 24 0 this Ljava/util/concurrent/ThreadPoolExecutor;
0 24 1 w Ljava/util/concurrent/ThreadPoolExecutor$Worker;
0 24 2 completedAbruptly Z
3 24 3 mainLock Ljava/util/concurrent/locks/ReentrantLock;
13 24 4 c I
18 22 5 min I
Exception table:
from to target type
4 7 7 any
MethodParameters:
Name Flags
w
completedAbruptly
private java.lang.Runnable getTask();
descriptor: ()Ljava/lang/Runnable;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=6, args_size=1
start local 0 0: iconst_0
istore 1
start local 1 1: StackMap locals: int
StackMap stack:
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.ctl:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
istore 2
start local 2 2: iload 2
iconst_0
invokestatic java.util.concurrent.ThreadPoolExecutor.runStateAtLeast:(II)Z
ifeq 6
3: iload 2
ldc 536870912
invokestatic java.util.concurrent.ThreadPoolExecutor.runStateAtLeast:(II)Z
ifne 4
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.workQueue:Ljava/util/concurrent/BlockingQueue;
invokeinterface java.util.concurrent.BlockingQueue.isEmpty:()Z
ifeq 6
4: StackMap locals: int
StackMap stack:
aload 0
invokevirtual java.util.concurrent.ThreadPoolExecutor.decrementWorkerCount:()V
5: aconst_null
areturn
6: StackMap locals:
StackMap stack:
iload 2
invokestatic java.util.concurrent.ThreadPoolExecutor.workerCountOf:(I)I
istore 3
start local 3 7: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.allowCoreThreadTimeOut:Z
ifne 8
iload 3
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.corePoolSize:I
if_icmpgt 8
iconst_0
goto 9
StackMap locals: int
StackMap stack:
8: iconst_1
StackMap locals:
StackMap stack: int
9: istore 4
start local 4 10: iload 3
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.maximumPoolSize:I
if_icmpgt 11
iload 4
ifeq 14
iload 1
ifeq 14
11: StackMap locals: int
StackMap stack:
iload 3
iconst_1
if_icmpgt 12
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.workQueue:Ljava/util/concurrent/BlockingQueue;
invokeinterface java.util.concurrent.BlockingQueue.isEmpty:()Z
ifeq 14
12: StackMap locals:
StackMap stack:
aload 0
iload 2
invokevirtual java.util.concurrent.ThreadPoolExecutor.compareAndDecrementWorkerCount:(I)Z
ifeq 1
13: aconst_null
areturn
14: StackMap locals:
StackMap stack:
iload 4
ifeq 16
15: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.workQueue:Ljava/util/concurrent/BlockingQueue;
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.keepAliveTime:J
getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
invokeinterface java.util.concurrent.BlockingQueue.poll:(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;
checkcast java.lang.Runnable
goto 17
16: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.workQueue:Ljava/util/concurrent/BlockingQueue;
invokeinterface java.util.concurrent.BlockingQueue.take:()Ljava/lang/Object;
checkcast java.lang.Runnable
17: StackMap locals:
StackMap stack: java.lang.Runnable
astore 5
start local 5 18: aload 5
ifnull 21
19: aload 5
20: areturn
21: StackMap locals: java.lang.Runnable
StackMap stack:
iconst_1
istore 1
end local 5 22: goto 1
StackMap locals: java.util.concurrent.ThreadPoolExecutor int int int int
StackMap stack: java.lang.InterruptedException
23: pop
24: iconst_0
istore 1
end local 4 end local 3 end local 2 25: goto 1
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 26 0 this Ljava/util/concurrent/ThreadPoolExecutor;
1 26 1 timedOut Z
2 25 2 c I
7 25 3 wc I
10 25 4 timed Z
18 22 5 r Ljava/lang/Runnable;
Exception table:
from to target type
14 20 23 Class java.lang.InterruptedException
21 22 23 Class java.lang.InterruptedException
final void runWorker(java.util.concurrent.ThreadPoolExecutor$Worker);
descriptor: (Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V
flags: (0x0010) ACC_FINAL
Code:
stack=5, locals=8, args_size=2
start local 0 start local 1 0: invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
astore 2
start local 2 1: aload 1
getfield java.util.concurrent.ThreadPoolExecutor$Worker.firstTask:Ljava/lang/Runnable;
astore 3
start local 3 2: aload 1
aconst_null
putfield java.util.concurrent.ThreadPoolExecutor$Worker.firstTask:Ljava/lang/Runnable;
3: aload 1
invokevirtual java.util.concurrent.ThreadPoolExecutor$Worker.unlock:()V
4: iconst_1
istore 4
start local 4 5: goto 27
6: StackMap locals: java.lang.Thread java.lang.Runnable int
StackMap stack:
aload 1
invokevirtual java.util.concurrent.ThreadPoolExecutor$Worker.lock:()V
7: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.ctl:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
ldc 536870912
invokestatic java.util.concurrent.ThreadPoolExecutor.runStateAtLeast:(II)Z
ifne 10
8: invokestatic java.lang.Thread.interrupted:()Z
ifeq 12
9: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.ctl:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
ldc 536870912
invokestatic java.util.concurrent.ThreadPoolExecutor.runStateAtLeast:(II)Z
ifeq 12
10: StackMap locals:
StackMap stack:
aload 2
invokevirtual java.lang.Thread.isInterrupted:()Z
ifne 12
11: aload 2
invokevirtual java.lang.Thread.interrupt:()V
12: StackMap locals:
StackMap stack:
aload 0
aload 2
aload 3
invokevirtual java.util.concurrent.ThreadPoolExecutor.beforeExecute:(Ljava/lang/Thread;Ljava/lang/Runnable;)V
13: aload 3
invokeinterface java.lang.Runnable.run:()V
14: aload 0
aload 3
aconst_null
invokevirtual java.util.concurrent.ThreadPoolExecutor.afterExecute:(Ljava/lang/Runnable;Ljava/lang/Throwable;)V
15: goto 24
StackMap locals:
StackMap stack: java.lang.Throwable
16: astore 5
start local 5 17: aload 0
aload 3
aload 5
invokevirtual java.util.concurrent.ThreadPoolExecutor.afterExecute:(Ljava/lang/Runnable;Ljava/lang/Throwable;)V
18: aload 5
athrow
end local 5 19: StackMap locals:
StackMap stack: java.lang.Throwable
astore 6
20: aconst_null
astore 3
21: aload 1
dup
getfield java.util.concurrent.ThreadPoolExecutor$Worker.completedTasks:J
lconst_1
ladd
putfield java.util.concurrent.ThreadPoolExecutor$Worker.completedTasks:J
22: aload 1
invokevirtual java.util.concurrent.ThreadPoolExecutor$Worker.unlock:()V
23: aload 6
athrow
24: StackMap locals:
StackMap stack:
aconst_null
astore 3
25: aload 1
dup
getfield java.util.concurrent.ThreadPoolExecutor$Worker.completedTasks:J
lconst_1
ladd
putfield java.util.concurrent.ThreadPoolExecutor$Worker.completedTasks:J
26: aload 1
invokevirtual java.util.concurrent.ThreadPoolExecutor$Worker.unlock:()V
27: StackMap locals:
StackMap stack:
aload 3
ifnonnull 6
aload 0
invokevirtual java.util.concurrent.ThreadPoolExecutor.getTask:()Ljava/lang/Runnable;
dup
astore 3
ifnonnull 6
28: iconst_0
istore 4
29: goto 33
StackMap locals:
StackMap stack: java.lang.Throwable
30: astore 7
31: aload 0
aload 1
iload 4
invokevirtual java.util.concurrent.ThreadPoolExecutor.processWorkerExit:(Ljava/util/concurrent/ThreadPoolExecutor$Worker;Z)V
32: aload 7
athrow
33: StackMap locals:
StackMap stack:
aload 0
aload 1
iload 4
invokevirtual java.util.concurrent.ThreadPoolExecutor.processWorkerExit:(Ljava/util/concurrent/ThreadPoolExecutor$Worker;Z)V
34: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 35 0 this Ljava/util/concurrent/ThreadPoolExecutor;
0 35 1 w Ljava/util/concurrent/ThreadPoolExecutor$Worker;
1 35 2 wt Ljava/lang/Thread;
2 35 3 task Ljava/lang/Runnable;
5 35 4 completedAbruptly Z
17 19 5 ex Ljava/lang/Throwable;
Exception table:
from to target type
13 15 16 Class java.lang.Throwable
12 19 19 any
5 30 30 any
MethodParameters:
Name Flags
w
public void <init>(int, int, long, java.util.concurrent.TimeUnit, java.util.concurrent.BlockingQueue<java.lang.Runnable>);
descriptor: (IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=9, locals=7, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 5 start local 6 0: aload 0
iload 1
iload 2
lload 3
aload 5
aload 6
1: invokestatic java.util.concurrent.Executors.defaultThreadFactory:()Ljava/util/concurrent/ThreadFactory;
getstatic java.util.concurrent.ThreadPoolExecutor.defaultHandler:Ljava/util/concurrent/RejectedExecutionHandler;
invokespecial java.util.concurrent.ThreadPoolExecutor.<init>:(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ThreadFactory;Ljava/util/concurrent/RejectedExecutionHandler;)V
2: return
end local 6 end local 5 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/util/concurrent/ThreadPoolExecutor;
0 3 1 corePoolSize I
0 3 2 maximumPoolSize I
0 3 3 keepAliveTime J
0 3 5 unit Ljava/util/concurrent/TimeUnit;
0 3 6 workQueue Ljava/util/concurrent/BlockingQueue<Ljava/lang/Runnable;>;
Signature: (IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue<Ljava/lang/Runnable;>;)V
MethodParameters:
Name Flags
corePoolSize
maximumPoolSize
keepAliveTime
unit
workQueue
public void <init>(int, int, long, java.util.concurrent.TimeUnit, java.util.concurrent.BlockingQueue<java.lang.Runnable>, java.util.concurrent.ThreadFactory);
descriptor: (IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ThreadFactory;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=9, locals=8, args_size=7
start local 0 start local 1 start local 2 start local 3 start local 5 start local 6 start local 7 0: aload 0
iload 1
iload 2
lload 3
aload 5
aload 6
1: aload 7
getstatic java.util.concurrent.ThreadPoolExecutor.defaultHandler:Ljava/util/concurrent/RejectedExecutionHandler;
invokespecial java.util.concurrent.ThreadPoolExecutor.<init>:(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ThreadFactory;Ljava/util/concurrent/RejectedExecutionHandler;)V
2: return
end local 7 end local 6 end local 5 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/util/concurrent/ThreadPoolExecutor;
0 3 1 corePoolSize I
0 3 2 maximumPoolSize I
0 3 3 keepAliveTime J
0 3 5 unit Ljava/util/concurrent/TimeUnit;
0 3 6 workQueue Ljava/util/concurrent/BlockingQueue<Ljava/lang/Runnable;>;
0 3 7 threadFactory Ljava/util/concurrent/ThreadFactory;
Signature: (IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue<Ljava/lang/Runnable;>;Ljava/util/concurrent/ThreadFactory;)V
MethodParameters:
Name Flags
corePoolSize
maximumPoolSize
keepAliveTime
unit
workQueue
threadFactory
public void <init>(int, int, long, java.util.concurrent.TimeUnit, java.util.concurrent.BlockingQueue<java.lang.Runnable>, java.util.concurrent.RejectedExecutionHandler);
descriptor: (IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/RejectedExecutionHandler;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=9, locals=8, args_size=7
start local 0 start local 1 start local 2 start local 3 start local 5 start local 6 start local 7 0: aload 0
iload 1
iload 2
lload 3
aload 5
aload 6
1: invokestatic java.util.concurrent.Executors.defaultThreadFactory:()Ljava/util/concurrent/ThreadFactory;
aload 7
invokespecial java.util.concurrent.ThreadPoolExecutor.<init>:(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ThreadFactory;Ljava/util/concurrent/RejectedExecutionHandler;)V
2: return
end local 7 end local 6 end local 5 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/util/concurrent/ThreadPoolExecutor;
0 3 1 corePoolSize I
0 3 2 maximumPoolSize I
0 3 3 keepAliveTime J
0 3 5 unit Ljava/util/concurrent/TimeUnit;
0 3 6 workQueue Ljava/util/concurrent/BlockingQueue<Ljava/lang/Runnable;>;
0 3 7 handler Ljava/util/concurrent/RejectedExecutionHandler;
Signature: (IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue<Ljava/lang/Runnable;>;Ljava/util/concurrent/RejectedExecutionHandler;)V
MethodParameters:
Name Flags
corePoolSize
maximumPoolSize
keepAliveTime
unit
workQueue
handler
public void <init>(int, int, long, java.util.concurrent.TimeUnit, java.util.concurrent.BlockingQueue<java.lang.Runnable>, java.util.concurrent.ThreadFactory, java.util.concurrent.RejectedExecutionHandler);
descriptor: (IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ThreadFactory;Ljava/util/concurrent/RejectedExecutionHandler;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=9, args_size=8
start local 0 start local 1 start local 2 start local 3 start local 5 start local 6 start local 7 start local 8 0: aload 0
invokespecial java.util.concurrent.AbstractExecutorService.<init>:()V
1: aload 0
new java.util.concurrent.atomic.AtomicInteger
dup
ldc -536870912
iconst_0
invokestatic java.util.concurrent.ThreadPoolExecutor.ctlOf:(II)I
invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:(I)V
putfield java.util.concurrent.ThreadPoolExecutor.ctl:Ljava/util/concurrent/atomic/AtomicInteger;
2: aload 0
new java.util.concurrent.locks.ReentrantLock
dup
invokespecial java.util.concurrent.locks.ReentrantLock.<init>:()V
putfield java.util.concurrent.ThreadPoolExecutor.mainLock:Ljava/util/concurrent/locks/ReentrantLock;
3: aload 0
new java.util.HashSet
dup
invokespecial java.util.HashSet.<init>:()V
putfield java.util.concurrent.ThreadPoolExecutor.workers:Ljava/util/HashSet;
4: aload 0
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.mainLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.newCondition:()Ljava/util/concurrent/locks/Condition;
putfield java.util.concurrent.ThreadPoolExecutor.termination:Ljava/util/concurrent/locks/Condition;
5: iload 1
iflt 9
6: iload 2
ifle 9
7: iload 2
iload 1
if_icmplt 9
8: lload 3
lconst_0
lcmp
ifge 10
9: StackMap locals: java.util.concurrent.ThreadPoolExecutor int int long java.util.concurrent.TimeUnit java.util.concurrent.BlockingQueue java.util.concurrent.ThreadFactory java.util.concurrent.RejectedExecutionHandler
StackMap stack:
new java.lang.IllegalArgumentException
dup
invokespecial java.lang.IllegalArgumentException.<init>:()V
athrow
10: StackMap locals:
StackMap stack:
aload 6
ifnull 11
aload 7
ifnull 11
aload 8
ifnonnull 12
11: StackMap locals:
StackMap stack:
new java.lang.NullPointerException
dup
invokespecial java.lang.NullPointerException.<init>:()V
athrow
12: StackMap locals:
StackMap stack:
aload 0
iload 1
putfield java.util.concurrent.ThreadPoolExecutor.corePoolSize:I
13: aload 0
iload 2
putfield java.util.concurrent.ThreadPoolExecutor.maximumPoolSize:I
14: aload 0
aload 6
putfield java.util.concurrent.ThreadPoolExecutor.workQueue:Ljava/util/concurrent/BlockingQueue;
15: aload 0
aload 5
lload 3
invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
putfield java.util.concurrent.ThreadPoolExecutor.keepAliveTime:J
16: aload 0
aload 7
putfield java.util.concurrent.ThreadPoolExecutor.threadFactory:Ljava/util/concurrent/ThreadFactory;
17: aload 0
aload 8
putfield java.util.concurrent.ThreadPoolExecutor.handler:Ljava/util/concurrent/RejectedExecutionHandler;
18: return
end local 8 end local 7 end local 6 end local 5 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Ljava/util/concurrent/ThreadPoolExecutor;
0 19 1 corePoolSize I
0 19 2 maximumPoolSize I
0 19 3 keepAliveTime J
0 19 5 unit Ljava/util/concurrent/TimeUnit;
0 19 6 workQueue Ljava/util/concurrent/BlockingQueue<Ljava/lang/Runnable;>;
0 19 7 threadFactory Ljava/util/concurrent/ThreadFactory;
0 19 8 handler Ljava/util/concurrent/RejectedExecutionHandler;
Signature: (IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue<Ljava/lang/Runnable;>;Ljava/util/concurrent/ThreadFactory;Ljava/util/concurrent/RejectedExecutionHandler;)V
MethodParameters:
Name Flags
corePoolSize
maximumPoolSize
keepAliveTime
unit
workQueue
threadFactory
handler
public void execute(java.lang.Runnable);
descriptor: (Ljava/lang/Runnable;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: aload 1
ifnonnull 2
1: new java.lang.NullPointerException
dup
invokespecial java.lang.NullPointerException.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.ctl:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
istore 2
start local 2 3: iload 2
invokestatic java.util.concurrent.ThreadPoolExecutor.workerCountOf:(I)I
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.corePoolSize:I
if_icmpge 7
4: aload 0
aload 1
iconst_1
invokevirtual java.util.concurrent.ThreadPoolExecutor.addWorker:(Ljava/lang/Runnable;Z)Z
ifeq 6
5: return
6: StackMap locals: int
StackMap stack:
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.ctl:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
istore 2
7: StackMap locals:
StackMap stack:
iload 2
invokestatic java.util.concurrent.ThreadPoolExecutor.isRunning:(I)Z
ifeq 14
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.workQueue:Ljava/util/concurrent/BlockingQueue;
aload 1
invokeinterface java.util.concurrent.BlockingQueue.offer:(Ljava/lang/Object;)Z
ifeq 14
8: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.ctl:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
istore 3
start local 3 9: iload 3
invokestatic java.util.concurrent.ThreadPoolExecutor.isRunning:(I)Z
ifne 11
aload 0
aload 1
invokevirtual java.util.concurrent.ThreadPoolExecutor.remove:(Ljava/lang/Runnable;)Z
ifeq 11
10: aload 0
aload 1
invokevirtual java.util.concurrent.ThreadPoolExecutor.reject:(Ljava/lang/Runnable;)V
goto 16
11: StackMap locals: int
StackMap stack:
iload 3
invokestatic java.util.concurrent.ThreadPoolExecutor.workerCountOf:(I)I
ifne 16
12: aload 0
aconst_null
iconst_0
invokevirtual java.util.concurrent.ThreadPoolExecutor.addWorker:(Ljava/lang/Runnable;Z)Z
pop
end local 3 13: goto 16
14: StackMap locals:
StackMap stack:
aload 0
aload 1
iconst_0
invokevirtual java.util.concurrent.ThreadPoolExecutor.addWorker:(Ljava/lang/Runnable;Z)Z
ifne 16
15: aload 0
aload 1
invokevirtual java.util.concurrent.ThreadPoolExecutor.reject:(Ljava/lang/Runnable;)V
16: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Ljava/util/concurrent/ThreadPoolExecutor;
0 17 1 command Ljava/lang/Runnable;
3 17 2 c I
9 13 3 recheck I
MethodParameters:
Name Flags
command
public void shutdown();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.mainLock:Ljava/util/concurrent/locks/ReentrantLock;
astore 1
start local 1 1: aload 1
invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
2: aload 0
invokevirtual java.util.concurrent.ThreadPoolExecutor.checkShutdownAccess:()V
3: aload 0
iconst_0
invokevirtual java.util.concurrent.ThreadPoolExecutor.advanceRunState:(I)V
4: aload 0
invokevirtual java.util.concurrent.ThreadPoolExecutor.interruptIdleWorkers:()V
5: aload 0
invokevirtual java.util.concurrent.ThreadPoolExecutor.onShutdown:()V
6: goto 10
StackMap locals: java.util.concurrent.ThreadPoolExecutor java.util.concurrent.locks.ReentrantLock
StackMap stack: java.lang.Throwable
7: astore 2
8: aload 1
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
9: aload 2
athrow
10: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
11: aload 0
invokevirtual java.util.concurrent.ThreadPoolExecutor.tryTerminate:()V
12: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Ljava/util/concurrent/ThreadPoolExecutor;
1 13 1 mainLock Ljava/util/concurrent/locks/ReentrantLock;
Exception table:
from to target type
2 7 7 any
public java.util.List<java.lang.Runnable> shutdownNow();
descriptor: ()Ljava/util/List;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=4, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.mainLock:Ljava/util/concurrent/locks/ReentrantLock;
astore 2
start local 2 1: aload 2
invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
2: aload 0
invokevirtual java.util.concurrent.ThreadPoolExecutor.checkShutdownAccess:()V
3: aload 0
ldc 536870912
invokevirtual java.util.concurrent.ThreadPoolExecutor.advanceRunState:(I)V
4: aload 0
invokevirtual java.util.concurrent.ThreadPoolExecutor.interruptWorkers:()V
5: aload 0
invokevirtual java.util.concurrent.ThreadPoolExecutor.drainQueue:()Ljava/util/List;
astore 1
start local 1 6: goto 10
end local 1 StackMap locals: java.util.concurrent.ThreadPoolExecutor top java.util.concurrent.locks.ReentrantLock
StackMap stack: java.lang.Throwable
7: astore 3
8: aload 2
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
9: aload 3
athrow
start local 1 10: StackMap locals: java.util.concurrent.ThreadPoolExecutor java.util.List java.util.concurrent.locks.ReentrantLock
StackMap stack:
aload 2
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
11: aload 0
invokevirtual java.util.concurrent.ThreadPoolExecutor.tryTerminate:()V
12: aload 1
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Ljava/util/concurrent/ThreadPoolExecutor;
6 7 1 tasks Ljava/util/List<Ljava/lang/Runnable;>;
10 13 1 tasks Ljava/util/List<Ljava/lang/Runnable;>;
1 13 2 mainLock Ljava/util/concurrent/locks/ReentrantLock;
Exception table:
from to target type
2 7 7 any
Signature: ()Ljava/util/List<Ljava/lang/Runnable;>;
public boolean isShutdown();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.ctl:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
iconst_0
invokestatic java.util.concurrent.ThreadPoolExecutor.runStateAtLeast:(II)Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/concurrent/ThreadPoolExecutor;
boolean isStopped();
descriptor: ()Z
flags: (0x0000)
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.ctl:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
ldc 536870912
invokestatic java.util.concurrent.ThreadPoolExecutor.runStateAtLeast:(II)Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/concurrent/ThreadPoolExecutor;
public boolean isTerminating();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.ctl:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
istore 1
start local 1 1: iload 1
iconst_0
invokestatic java.util.concurrent.ThreadPoolExecutor.runStateAtLeast:(II)Z
ifeq 2
iload 1
ldc 1610612736
invokestatic java.util.concurrent.ThreadPoolExecutor.runStateLessThan:(II)Z
ifeq 2
iconst_1
ireturn
StackMap locals: int
StackMap stack:
2: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/util/concurrent/ThreadPoolExecutor;
1 3 1 c I
public boolean isTerminated();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.ctl:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
ldc 1610612736
invokestatic java.util.concurrent.ThreadPoolExecutor.runStateAtLeast:(II)Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/concurrent/ThreadPoolExecutor;
public boolean awaitTermination(long, java.util.concurrent.TimeUnit);
descriptor: (JLjava/util/concurrent/TimeUnit;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=8, args_size=3
start local 0 start local 1 start local 3 0: aload 3
lload 1
invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
lstore 4
start local 4 1: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.mainLock:Ljava/util/concurrent/locks/ReentrantLock;
astore 6
start local 6 2: aload 6
invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
3: goto 8
4: StackMap locals: long java.util.concurrent.locks.ReentrantLock
StackMap stack:
lload 4
lconst_0
lcmp
ifgt 7
5: aload 6
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
6: iconst_0
ireturn
7: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.termination:Ljava/util/concurrent/locks/Condition;
lload 4
invokeinterface java.util.concurrent.locks.Condition.awaitNanos:(J)J
lstore 4
8: StackMap locals:
StackMap stack:
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.ctl:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
ldc 1610612736
invokestatic java.util.concurrent.ThreadPoolExecutor.runStateLessThan:(II)Z
ifne 4
9: aload 6
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
10: iconst_1
ireturn
11: StackMap locals:
StackMap stack: java.lang.Throwable
astore 7
12: aload 6
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
13: aload 7
athrow
end local 6 end local 4 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Ljava/util/concurrent/ThreadPoolExecutor;
0 14 1 timeout J
0 14 3 unit Ljava/util/concurrent/TimeUnit;
1 14 4 nanos J
2 14 6 mainLock Ljava/util/concurrent/locks/ReentrantLock;
Exception table:
from to target type
3 5 11 any
7 9 11 any
Exceptions:
throws java.lang.InterruptedException
MethodParameters:
Name Flags
timeout
unit
protected void finalize();
descriptor: ()V
flags: (0x0004) ACC_PROTECTED
Code:
stack=0, locals=1, args_size=1
start local 0 0: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/concurrent/ThreadPoolExecutor;
RuntimeVisibleAnnotations:
java.lang.Deprecated(since = "9")
public void setThreadFactory(java.util.concurrent.ThreadFactory);
descriptor: (Ljava/util/concurrent/ThreadFactory;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 1
ifnonnull 2
1: new java.lang.NullPointerException
dup
invokespecial java.lang.NullPointerException.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
aload 0
aload 1
putfield java.util.concurrent.ThreadPoolExecutor.threadFactory:Ljava/util/concurrent/ThreadFactory;
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljava/util/concurrent/ThreadPoolExecutor;
0 4 1 threadFactory Ljava/util/concurrent/ThreadFactory;
MethodParameters:
Name Flags
threadFactory
public java.util.concurrent.ThreadFactory getThreadFactory();
descriptor: ()Ljava/util/concurrent/ThreadFactory;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.threadFactory:Ljava/util/concurrent/ThreadFactory;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/concurrent/ThreadPoolExecutor;
public void setRejectedExecutionHandler(java.util.concurrent.RejectedExecutionHandler);
descriptor: (Ljava/util/concurrent/RejectedExecutionHandler;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 1
ifnonnull 2
1: new java.lang.NullPointerException
dup
invokespecial java.lang.NullPointerException.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
aload 0
aload 1
putfield java.util.concurrent.ThreadPoolExecutor.handler:Ljava/util/concurrent/RejectedExecutionHandler;
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljava/util/concurrent/ThreadPoolExecutor;
0 4 1 handler Ljava/util/concurrent/RejectedExecutionHandler;
MethodParameters:
Name Flags
handler
public java.util.concurrent.RejectedExecutionHandler getRejectedExecutionHandler();
descriptor: ()Ljava/util/concurrent/RejectedExecutionHandler;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.handler:Ljava/util/concurrent/RejectedExecutionHandler;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/concurrent/ThreadPoolExecutor;
public void setCorePoolSize(int);
descriptor: (I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=2
start local 0 start local 1 0: iload 1
iflt 1
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.maximumPoolSize:I
iload 1
if_icmpge 2
1: StackMap locals:
StackMap stack:
new java.lang.IllegalArgumentException
dup
invokespecial java.lang.IllegalArgumentException.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
iload 1
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.corePoolSize:I
isub
istore 2
start local 2 3: aload 0
iload 1
putfield java.util.concurrent.ThreadPoolExecutor.corePoolSize:I
4: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.ctl:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
invokestatic java.util.concurrent.ThreadPoolExecutor.workerCountOf:(I)I
iload 1
if_icmple 6
5: aload 0
invokevirtual java.util.concurrent.ThreadPoolExecutor.interruptIdleWorkers:()V
goto 12
6: StackMap locals: int
StackMap stack:
iload 2
ifle 12
7: iload 2
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.workQueue:Ljava/util/concurrent/BlockingQueue;
invokeinterface java.util.concurrent.BlockingQueue.size:()I
invokestatic java.lang.Math.min:(II)I
istore 3
start local 3 8: goto 11
9: StackMap locals: int
StackMap stack:
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.workQueue:Ljava/util/concurrent/BlockingQueue;
invokeinterface java.util.concurrent.BlockingQueue.isEmpty:()Z
ifeq 11
10: goto 12
11: StackMap locals:
StackMap stack:
iload 3
iinc 3 -1
ifle 12
aload 0
aconst_null
iconst_1
invokevirtual java.util.concurrent.ThreadPoolExecutor.addWorker:(Ljava/lang/Runnable;Z)Z
ifne 9
end local 3 12: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Ljava/util/concurrent/ThreadPoolExecutor;
0 13 1 corePoolSize I
3 13 2 delta I
8 12 3 k I
MethodParameters:
Name Flags
corePoolSize
public int getCorePoolSize();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.corePoolSize:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/concurrent/ThreadPoolExecutor;
public boolean prestartCoreThread();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.ctl:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
invokestatic java.util.concurrent.ThreadPoolExecutor.workerCountOf:(I)I
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.corePoolSize:I
if_icmpge 3
1: aload 0
aconst_null
iconst_1
invokevirtual java.util.concurrent.ThreadPoolExecutor.addWorker:(Ljava/lang/Runnable;Z)Z
ifeq 3
2: iconst_1
ireturn
StackMap locals:
StackMap stack:
3: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljava/util/concurrent/ThreadPoolExecutor;
void ensurePrestart();
descriptor: ()V
flags: (0x0000)
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.ctl:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
invokestatic java.util.concurrent.ThreadPoolExecutor.workerCountOf:(I)I
istore 1
start local 1 1: iload 1
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.corePoolSize:I
if_icmpge 3
2: aload 0
aconst_null
iconst_1
invokevirtual java.util.concurrent.ThreadPoolExecutor.addWorker:(Ljava/lang/Runnable;Z)Z
pop
goto 5
3: StackMap locals: int
StackMap stack:
iload 1
ifne 5
4: aload 0
aconst_null
iconst_0
invokevirtual java.util.concurrent.ThreadPoolExecutor.addWorker:(Ljava/lang/Runnable;Z)Z
pop
5: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Ljava/util/concurrent/ThreadPoolExecutor;
1 6 1 wc I
public int prestartAllCoreThreads();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: iconst_0
istore 1
start local 1 1: goto 3
2: StackMap locals: int
StackMap stack:
iinc 1 1
3: StackMap locals:
StackMap stack:
aload 0
aconst_null
iconst_1
invokevirtual java.util.concurrent.ThreadPoolExecutor.addWorker:(Ljava/lang/Runnable;Z)Z
ifne 2
4: iload 1
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljava/util/concurrent/ThreadPoolExecutor;
1 5 1 n I
public boolean allowsCoreThreadTimeOut();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.allowCoreThreadTimeOut:Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/concurrent/ThreadPoolExecutor;
public void allowCoreThreadTimeOut(boolean);
descriptor: (Z)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: iload 1
ifeq 2
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.keepAliveTime:J
lconst_0
lcmp
ifgt 2
1: new java.lang.IllegalArgumentException
dup
ldc "Core threads must have nonzero keep alive times"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
iload 1
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.allowCoreThreadTimeOut:Z
if_icmpeq 6
3: aload 0
iload 1
putfield java.util.concurrent.ThreadPoolExecutor.allowCoreThreadTimeOut:Z
4: iload 1
ifeq 6
5: aload 0
invokevirtual java.util.concurrent.ThreadPoolExecutor.interruptIdleWorkers:()V
6: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Ljava/util/concurrent/ThreadPoolExecutor;
0 7 1 value Z
MethodParameters:
Name Flags
value
public void setMaximumPoolSize(int);
descriptor: (I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: iload 1
ifle 1
iload 1
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.corePoolSize:I
if_icmpge 2
1: StackMap locals:
StackMap stack:
new java.lang.IllegalArgumentException
dup
invokespecial java.lang.IllegalArgumentException.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
aload 0
iload 1
putfield java.util.concurrent.ThreadPoolExecutor.maximumPoolSize:I
3: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.ctl:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
invokestatic java.util.concurrent.ThreadPoolExecutor.workerCountOf:(I)I
iload 1
if_icmple 5
4: aload 0
invokevirtual java.util.concurrent.ThreadPoolExecutor.interruptIdleWorkers:()V
5: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Ljava/util/concurrent/ThreadPoolExecutor;
0 6 1 maximumPoolSize I
MethodParameters:
Name Flags
maximumPoolSize
public int getMaximumPoolSize();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.maximumPoolSize:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/concurrent/ThreadPoolExecutor;
public void setKeepAliveTime(long, java.util.concurrent.TimeUnit);
descriptor: (JLjava/util/concurrent/TimeUnit;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=8, args_size=3
start local 0 start local 1 start local 3 0: lload 1
lconst_0
lcmp
ifge 2
1: new java.lang.IllegalArgumentException
dup
invokespecial java.lang.IllegalArgumentException.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
lload 1
lconst_0
lcmp
ifne 4
aload 0
invokevirtual java.util.concurrent.ThreadPoolExecutor.allowsCoreThreadTimeOut:()Z
ifeq 4
3: new java.lang.IllegalArgumentException
dup
ldc "Core threads must have nonzero keep alive times"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aload 3
lload 1
invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
lstore 4
start local 4 5: lload 4
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.keepAliveTime:J
lsub
lstore 6
start local 6 6: aload 0
lload 4
putfield java.util.concurrent.ThreadPoolExecutor.keepAliveTime:J
7: lload 6
lconst_0
lcmp
ifge 9
8: aload 0
invokevirtual java.util.concurrent.ThreadPoolExecutor.interruptIdleWorkers:()V
9: StackMap locals: long long
StackMap stack:
return
end local 6 end local 4 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Ljava/util/concurrent/ThreadPoolExecutor;
0 10 1 time J
0 10 3 unit Ljava/util/concurrent/TimeUnit;
5 10 4 keepAliveTime J
6 10 6 delta J
MethodParameters:
Name Flags
time
unit
public long getKeepAliveTime(java.util.concurrent.TimeUnit);
descriptor: (Ljava/util/concurrent/TimeUnit;)J
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 1
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.keepAliveTime:J
getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
invokevirtual java.util.concurrent.TimeUnit.convert:(JLjava/util/concurrent/TimeUnit;)J
lreturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/concurrent/ThreadPoolExecutor;
0 1 1 unit Ljava/util/concurrent/TimeUnit;
MethodParameters:
Name Flags
unit
public java.util.concurrent.BlockingQueue<java.lang.Runnable> getQueue();
descriptor: ()Ljava/util/concurrent/BlockingQueue;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.workQueue:Ljava/util/concurrent/BlockingQueue;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/concurrent/ThreadPoolExecutor;
Signature: ()Ljava/util/concurrent/BlockingQueue<Ljava/lang/Runnable;>;
public boolean remove(java.lang.Runnable);
descriptor: (Ljava/lang/Runnable;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.workQueue:Ljava/util/concurrent/BlockingQueue;
aload 1
invokeinterface java.util.concurrent.BlockingQueue.remove:(Ljava/lang/Object;)Z
istore 2
start local 2 1: aload 0
invokevirtual java.util.concurrent.ThreadPoolExecutor.tryTerminate:()V
2: iload 2
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/util/concurrent/ThreadPoolExecutor;
0 3 1 task Ljava/lang/Runnable;
1 3 2 removed Z
MethodParameters:
Name Flags
task
public void purge();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=6, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.workQueue:Ljava/util/concurrent/BlockingQueue;
astore 1
start local 1 1: aload 1
invokeinterface java.util.concurrent.BlockingQueue.iterator:()Ljava/util/Iterator;
astore 2
start local 2 2: goto 6
3: StackMap locals: java.util.concurrent.BlockingQueue java.util.Iterator
StackMap stack:
aload 2
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.Runnable
astore 3
start local 3 4: aload 3
instanceof java.util.concurrent.Future
ifeq 6
aload 3
checkcast java.util.concurrent.Future
invokeinterface java.util.concurrent.Future.isCancelled:()Z
ifeq 6
5: aload 2
invokeinterface java.util.Iterator.remove:()V
end local 3 6: StackMap locals:
StackMap stack:
aload 2
invokeinterface java.util.Iterator.hasNext:()Z
ifne 3
end local 2 7: goto 15
StackMap locals: java.util.concurrent.ThreadPoolExecutor java.util.concurrent.BlockingQueue
StackMap stack: java.util.ConcurrentModificationException
8: pop
9: aload 1
invokeinterface java.util.concurrent.BlockingQueue.toArray:()[Ljava/lang/Object;
dup
astore 5
arraylength
istore 4
iconst_0
istore 3
goto 14
StackMap locals: java.util.concurrent.ThreadPoolExecutor java.util.concurrent.BlockingQueue top int int java.lang.Object[]
StackMap stack:
10: aload 5
iload 3
aaload
astore 2
start local 2 11: aload 2
instanceof java.util.concurrent.Future
ifeq 13
aload 2
checkcast java.util.concurrent.Future
invokeinterface java.util.concurrent.Future.isCancelled:()Z
ifeq 13
12: aload 1
aload 2
invokeinterface java.util.concurrent.BlockingQueue.remove:(Ljava/lang/Object;)Z
pop
end local 2 13: StackMap locals:
StackMap stack:
iinc 3 1
StackMap locals:
StackMap stack:
14: iload 3
iload 4
if_icmplt 10
15: StackMap locals: java.util.concurrent.ThreadPoolExecutor java.util.concurrent.BlockingQueue
StackMap stack:
aload 0
invokevirtual java.util.concurrent.ThreadPoolExecutor.tryTerminate:()V
16: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Ljava/util/concurrent/ThreadPoolExecutor;
1 17 1 q Ljava/util/concurrent/BlockingQueue<Ljava/lang/Runnable;>;
2 7 2 it Ljava/util/Iterator<Ljava/lang/Runnable;>;
4 6 3 r Ljava/lang/Runnable;
11 13 2 r Ljava/lang/Object;
Exception table:
from to target type
1 7 8 Class java.util.ConcurrentModificationException
public int getPoolSize();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=4, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.mainLock:Ljava/util/concurrent/locks/ReentrantLock;
astore 1
start local 1 1: aload 1
invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
2: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.ctl:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
ldc 1073741824
invokestatic java.util.concurrent.ThreadPoolExecutor.runStateAtLeast:(II)Z
ifeq 3
iconst_0
goto 4
3: StackMap locals: java.util.concurrent.locks.ReentrantLock
StackMap stack:
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.workers:Ljava/util/HashSet;
invokevirtual java.util.HashSet.size:()I
StackMap locals:
StackMap stack: int
4: istore 3
5: aload 1
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
6: iload 3
ireturn
7: StackMap locals:
StackMap stack: java.lang.Throwable
astore 2
8: aload 1
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
9: aload 2
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Ljava/util/concurrent/ThreadPoolExecutor;
1 10 1 mainLock Ljava/util/concurrent/locks/ReentrantLock;
Exception table:
from to target type
2 5 7 any
public int getActiveCount();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=7, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.mainLock:Ljava/util/concurrent/locks/ReentrantLock;
astore 1
start local 1 1: aload 1
invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
2: iconst_0
istore 2
start local 2 3: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.workers:Ljava/util/HashSet;
invokevirtual java.util.HashSet.iterator:()Ljava/util/Iterator;
astore 4
goto 7
StackMap locals: java.util.concurrent.ThreadPoolExecutor java.util.concurrent.locks.ReentrantLock int top java.util.Iterator
StackMap stack:
4: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.util.concurrent.ThreadPoolExecutor$Worker
astore 3
start local 3 5: aload 3
invokevirtual java.util.concurrent.ThreadPoolExecutor$Worker.isLocked:()Z
ifeq 7
6: iinc 2 1
end local 3 7: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 4
8: iload 2
istore 6
9: aload 1
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
10: iload 6
ireturn
end local 2 11: StackMap locals: java.util.concurrent.ThreadPoolExecutor java.util.concurrent.locks.ReentrantLock
StackMap stack: java.lang.Throwable
astore 5
12: aload 1
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
13: aload 5
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Ljava/util/concurrent/ThreadPoolExecutor;
1 14 1 mainLock Ljava/util/concurrent/locks/ReentrantLock;
3 11 2 n I
5 7 3 w Ljava/util/concurrent/ThreadPoolExecutor$Worker;
Exception table:
from to target type
2 9 11 any
public int getLargestPoolSize();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=4, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.mainLock:Ljava/util/concurrent/locks/ReentrantLock;
astore 1
start local 1 1: aload 1
invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
2: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.largestPoolSize:I
istore 3
3: aload 1
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
4: iload 3
ireturn
5: StackMap locals: java.util.concurrent.ThreadPoolExecutor java.util.concurrent.locks.ReentrantLock
StackMap stack: java.lang.Throwable
astore 2
6: aload 1
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
7: aload 2
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Ljava/util/concurrent/ThreadPoolExecutor;
1 8 1 mainLock Ljava/util/concurrent/locks/ReentrantLock;
Exception table:
from to target type
2 3 5 any
public long getTaskCount();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=9, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.mainLock:Ljava/util/concurrent/locks/ReentrantLock;
astore 1
start local 1 1: aload 1
invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
2: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.completedTaskCount:J
lstore 2
start local 2 3: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.workers:Ljava/util/HashSet;
invokevirtual java.util.HashSet.iterator:()Ljava/util/Iterator;
astore 5
goto 8
StackMap locals: java.util.concurrent.ThreadPoolExecutor java.util.concurrent.locks.ReentrantLock long top java.util.Iterator
StackMap stack:
4: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.util.concurrent.ThreadPoolExecutor$Worker
astore 4
start local 4 5: lload 2
aload 4
getfield java.util.concurrent.ThreadPoolExecutor$Worker.completedTasks:J
ladd
lstore 2
6: aload 4
invokevirtual java.util.concurrent.ThreadPoolExecutor$Worker.isLocked:()Z
ifeq 8
7: lload 2
lconst_1
ladd
lstore 2
end local 4 8: StackMap locals:
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 4
9: lload 2
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.workQueue:Ljava/util/concurrent/BlockingQueue;
invokeinterface java.util.concurrent.BlockingQueue.size:()I
i2l
ladd
lstore 7
10: aload 1
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
11: lload 7
lreturn
end local 2 12: StackMap locals: java.util.concurrent.ThreadPoolExecutor java.util.concurrent.locks.ReentrantLock
StackMap stack: java.lang.Throwable
astore 6
13: aload 1
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
14: aload 6
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Ljava/util/concurrent/ThreadPoolExecutor;
1 15 1 mainLock Ljava/util/concurrent/locks/ReentrantLock;
3 12 2 n J
5 8 4 w Ljava/util/concurrent/ThreadPoolExecutor$Worker;
Exception table:
from to target type
2 10 12 any
public long getCompletedTaskCount();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=9, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.mainLock:Ljava/util/concurrent/locks/ReentrantLock;
astore 1
start local 1 1: aload 1
invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
2: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.completedTaskCount:J
lstore 2
start local 2 3: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.workers:Ljava/util/HashSet;
invokevirtual java.util.HashSet.iterator:()Ljava/util/Iterator;
astore 5
goto 6
StackMap locals: java.util.concurrent.ThreadPoolExecutor java.util.concurrent.locks.ReentrantLock long top java.util.Iterator
StackMap stack:
4: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.util.concurrent.ThreadPoolExecutor$Worker
astore 4
start local 4 5: lload 2
aload 4
getfield java.util.concurrent.ThreadPoolExecutor$Worker.completedTasks:J
ladd
lstore 2
end local 4 6: StackMap locals:
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 4
7: lload 2
lstore 7
8: aload 1
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
9: lload 7
lreturn
end local 2 10: StackMap locals: java.util.concurrent.ThreadPoolExecutor java.util.concurrent.locks.ReentrantLock
StackMap stack: java.lang.Throwable
astore 6
11: aload 1
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
12: aload 6
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Ljava/util/concurrent/ThreadPoolExecutor;
1 13 1 mainLock Ljava/util/concurrent/locks/ReentrantLock;
3 10 2 n J
5 6 4 w Ljava/util/concurrent/ThreadPoolExecutor$Worker;
Exception table:
from to target type
2 8 10 any
public java.lang.String toString();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=9, args_size=1
start local 0 0: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.mainLock:Ljava/util/concurrent/locks/ReentrantLock;
astore 5
start local 5 1: aload 5
invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
2: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.completedTaskCount:J
lstore 1
start local 1 3: iconst_0
istore 4
start local 4 4: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.workers:Ljava/util/HashSet;
invokevirtual java.util.HashSet.size:()I
istore 3
start local 3 5: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.workers:Ljava/util/HashSet;
invokevirtual java.util.HashSet.iterator:()Ljava/util/Iterator;
astore 7
goto 10
StackMap locals: java.util.concurrent.ThreadPoolExecutor long int int java.util.concurrent.locks.ReentrantLock top java.util.Iterator
StackMap stack:
6: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.util.concurrent.ThreadPoolExecutor$Worker
astore 6
start local 6 7: lload 1
aload 6
getfield java.util.concurrent.ThreadPoolExecutor$Worker.completedTasks:J
ladd
lstore 1
8: aload 6
invokevirtual java.util.concurrent.ThreadPoolExecutor$Worker.isLocked:()Z
ifeq 10
9: iinc 4 1
end local 6 10: StackMap locals:
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 6
11: goto 15
end local 4 end local 3 end local 1 StackMap locals: java.util.concurrent.ThreadPoolExecutor top top top top java.util.concurrent.locks.ReentrantLock
StackMap stack: java.lang.Throwable
12: astore 8
13: aload 5
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
14: aload 8
athrow
start local 1 start local 3 start local 4 15: StackMap locals: java.util.concurrent.ThreadPoolExecutor long int int java.util.concurrent.locks.ReentrantLock
StackMap stack:
aload 5
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
16: aload 0
getfield java.util.concurrent.ThreadPoolExecutor.ctl:Ljava/util/concurrent/atomic/AtomicInteger;
invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
istore 6
start local 6 17: iload 6
invokestatic java.util.concurrent.ThreadPoolExecutor.isRunning:(I)Z
ifeq 18
ldc "Running"
goto 20
18: StackMap locals: int
StackMap stack:
iload 6
ldc 1610612736
invokestatic java.util.concurrent.ThreadPoolExecutor.runStateAtLeast:(II)Z
ifeq 19
ldc "Terminated"
goto 20
19: StackMap locals:
StackMap stack:
ldc "Shutting down"
20: StackMap locals:
StackMap stack: java.lang.String
astore 7
start local 7 21: new java.lang.StringBuilder
dup
aload 0
invokespecial java.lang.Object.toString:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
22: ldc "["
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 7
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
23: ldc ", pool size = "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 3
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
24: ldc ", active threads = "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 4
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
25: ldc ", queued tasks = "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield java.util.concurrent.ThreadPoolExecutor.workQueue:Ljava/util/concurrent/BlockingQueue;
invokeinterface java.util.concurrent.BlockingQueue.size:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
26: ldc ", completed tasks = "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
lload 1
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
27: ldc "]"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
28: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 7 end local 6 end local 5 end local 4 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 29 0 this Ljava/util/concurrent/ThreadPoolExecutor;
3 12 1 ncompleted J
15 29 1 ncompleted J
5 12 3 nworkers I
15 29 3 nworkers I
4 12 4 nactive I
15 29 4 nactive I
1 29 5 mainLock Ljava/util/concurrent/locks/ReentrantLock;
7 10 6 w Ljava/util/concurrent/ThreadPoolExecutor$Worker;
17 29 6 c I
21 29 7 runState Ljava/lang/String;
Exception table:
from to target type
2 12 12 any
protected void beforeExecute(java.lang.Thread, java.lang.Runnable);
descriptor: (Ljava/lang/Thread;Ljava/lang/Runnable;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=0, locals=3, args_size=3
start local 0 start local 1 start local 2 0: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/concurrent/ThreadPoolExecutor;
0 1 1 t Ljava/lang/Thread;
0 1 2 r Ljava/lang/Runnable;
MethodParameters:
Name Flags
t
r
protected void afterExecute(java.lang.Runnable, java.lang.Throwable);
descriptor: (Ljava/lang/Runnable;Ljava/lang/Throwable;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=0, locals=3, args_size=3
start local 0 start local 1 start local 2 0: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/concurrent/ThreadPoolExecutor;
0 1 1 r Ljava/lang/Runnable;
0 1 2 t Ljava/lang/Throwable;
MethodParameters:
Name Flags
r
t
protected void terminated();
descriptor: ()V
flags: (0x0004) ACC_PROTECTED
Code:
stack=0, locals=1, args_size=1
start local 0 0: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/util/concurrent/ThreadPoolExecutor;
}
SourceFile: "ThreadPoolExecutor.java"
NestMembers:
java.util.concurrent.ThreadPoolExecutor$AbortPolicy java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy java.util.concurrent.ThreadPoolExecutor$DiscardOldestPolicy java.util.concurrent.ThreadPoolExecutor$DiscardPolicy java.util.concurrent.ThreadPoolExecutor$Worker
InnerClasses:
public final State = java.lang.Thread$State of java.lang.Thread
public AbortPolicy = java.util.concurrent.ThreadPoolExecutor$AbortPolicy of java.util.concurrent.ThreadPoolExecutor
public CallerRunsPolicy = java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy of java.util.concurrent.ThreadPoolExecutor
public DiscardOldestPolicy = java.util.concurrent.ThreadPoolExecutor$DiscardOldestPolicy of java.util.concurrent.ThreadPoolExecutor
public DiscardPolicy = java.util.concurrent.ThreadPoolExecutor$DiscardPolicy of java.util.concurrent.ThreadPoolExecutor
private final Worker = java.util.concurrent.ThreadPoolExecutor$Worker of java.util.concurrent.ThreadPoolExecutor