public class org.glassfish.grizzly.threadpool.FixedThreadPool extends org.glassfish.grizzly.threadpool.AbstractThreadPool
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.glassfish.grizzly.threadpool.FixedThreadPool
super_class: org.glassfish.grizzly.threadpool.AbstractThreadPool
{
protected final java.util.concurrent.BlockingQueue<java.lang.Runnable> workQueue;
descriptor: Ljava/util/concurrent/BlockingQueue;
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
Signature: Ljava/util/concurrent/BlockingQueue<Ljava/lang/Runnable;>;
public void <init>(org.glassfish.grizzly.threadpool.ThreadPoolConfig);
descriptor: (Lorg/glassfish/grizzly/threadpool/ThreadPoolConfig;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=2
start local 0 // org.glassfish.grizzly.threadpool.FixedThreadPool this
start local 1 // org.glassfish.grizzly.threadpool.ThreadPoolConfig config
0: .line 34
aload 0 /* this */
aload 1 /* config */
invokespecial org.glassfish.grizzly.threadpool.AbstractThreadPool.<init>:(Lorg/glassfish/grizzly/threadpool/ThreadPoolConfig;)V
1: .line 36
aload 0 /* this */
aload 1 /* config */
invokevirtual org.glassfish.grizzly.threadpool.ThreadPoolConfig.getQueue:()Ljava/util/Queue;
ifnull 3
2: .line 37
aload 1 /* config */
invokevirtual org.glassfish.grizzly.threadpool.ThreadPoolConfig.getQueue:()Ljava/util/Queue;
checkcast java.util.concurrent.BlockingQueue
goto 8
3: .line 38
StackMap locals: org.glassfish.grizzly.threadpool.FixedThreadPool org.glassfish.grizzly.threadpool.ThreadPoolConfig
StackMap stack: org.glassfish.grizzly.threadpool.FixedThreadPool
aload 1 /* config */
4: .line 39
new java.util.concurrent.LinkedTransferQueue
dup
invokespecial java.util.concurrent.LinkedTransferQueue.<init>:()V
5: .line 38
invokevirtual org.glassfish.grizzly.threadpool.ThreadPoolConfig.setQueue:(Ljava/util/Queue;)Lorg/glassfish/grizzly/threadpool/ThreadPoolConfig;
6: .line 39
invokevirtual org.glassfish.grizzly.threadpool.ThreadPoolConfig.getQueue:()Ljava/util/Queue;
7: .line 38
checkcast java.util.concurrent.BlockingQueue
8: .line 36
StackMap locals: org.glassfish.grizzly.threadpool.FixedThreadPool org.glassfish.grizzly.threadpool.ThreadPoolConfig
StackMap stack: org.glassfish.grizzly.threadpool.FixedThreadPool java.util.concurrent.BlockingQueue
putfield org.glassfish.grizzly.threadpool.FixedThreadPool.workQueue:Ljava/util/concurrent/BlockingQueue;
9: .line 41
aload 1 /* config */
invokevirtual org.glassfish.grizzly.threadpool.ThreadPoolConfig.getMaxPoolSize:()I
istore 2 /* poolSize */
start local 2 // int poolSize
10: .line 43
aload 0 /* this */
getfield org.glassfish.grizzly.threadpool.FixedThreadPool.stateLock:Ljava/lang/Object;
dup
astore 3
monitorenter
11: .line 44
goto 13
12: .line 45
StackMap locals: int java.lang.Object
StackMap stack:
aload 0 /* this */
invokevirtual org.glassfish.grizzly.threadpool.FixedThreadPool.doStartWorker:()V
13: .line 44
StackMap locals:
StackMap stack:
iload 2 /* poolSize */
iinc 2 /* poolSize */ -1
ifgt 12
14: .line 43
aload 3
monitorexit
15: goto 18
StackMap locals:
StackMap stack: java.lang.Throwable
16: aload 3
monitorexit
17: athrow
18: .line 49
StackMap locals:
StackMap stack:
aload 0 /* this */
invokestatic org.glassfish.grizzly.threadpool.ProbeNotifier.notifyThreadPoolStarted:(Lorg/glassfish/grizzly/threadpool/AbstractThreadPool;)V
19: .line 50
aload 0 /* this */
invokespecial org.glassfish.grizzly.threadpool.AbstractThreadPool.onMaxNumberOfThreadsReached:()V
20: .line 51
return
end local 2 // int poolSize
end local 1 // org.glassfish.grizzly.threadpool.ThreadPoolConfig config
end local 0 // org.glassfish.grizzly.threadpool.FixedThreadPool this
LocalVariableTable:
Start End Slot Name Signature
0 21 0 this Lorg/glassfish/grizzly/threadpool/FixedThreadPool;
0 21 1 config Lorg/glassfish/grizzly/threadpool/ThreadPoolConfig;
10 21 2 poolSize I
Exception table:
from to target type
11 15 16 any
16 17 16 any
MethodParameters:
Name Flags
config
private void doStartWorker();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=1, args_size=1
start local 0 // org.glassfish.grizzly.threadpool.FixedThreadPool this
0: .line 57
aload 0 /* this */
new org.glassfish.grizzly.threadpool.FixedThreadPool$BasicWorker
dup
aload 0 /* this */
invokespecial org.glassfish.grizzly.threadpool.FixedThreadPool$BasicWorker.<init>:(Lorg/glassfish/grizzly/threadpool/FixedThreadPool;)V
invokevirtual org.glassfish.grizzly.threadpool.FixedThreadPool.startWorker:(Lorg/glassfish/grizzly/threadpool/AbstractThreadPool$Worker;)V
1: .line 58
return
end local 0 // org.glassfish.grizzly.threadpool.FixedThreadPool this
LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/glassfish/grizzly/threadpool/FixedThreadPool;
public void execute(java.lang.Runnable);
descriptor: (Ljava/lang/Runnable;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 // org.glassfish.grizzly.threadpool.FixedThreadPool this
start local 1 // java.lang.Runnable command
0: .line 62
aload 0 /* this */
getfield org.glassfish.grizzly.threadpool.FixedThreadPool.running:Z
ifeq 8
1: .line 63
aload 0 /* this */
getfield org.glassfish.grizzly.threadpool.FixedThreadPool.workQueue:Ljava/util/concurrent/BlockingQueue;
aload 1 /* command */
invokeinterface java.util.concurrent.BlockingQueue.offer:(Ljava/lang/Object;)Z
ifeq 6
2: .line 65
aload 0 /* this */
getfield org.glassfish.grizzly.threadpool.FixedThreadPool.running:Z
ifne 4
aload 0 /* this */
getfield org.glassfish.grizzly.threadpool.FixedThreadPool.workQueue:Ljava/util/concurrent/BlockingQueue;
aload 1 /* command */
invokeinterface java.util.concurrent.BlockingQueue.remove:(Ljava/lang/Object;)Z
ifeq 4
3: .line 66
new java.util.concurrent.RejectedExecutionException
dup
ldc "ThreadPool is not running"
invokespecial java.util.concurrent.RejectedExecutionException.<init>:(Ljava/lang/String;)V
athrow
4: .line 69
StackMap locals:
StackMap stack:
aload 0 /* this */
aload 1 /* command */
invokevirtual org.glassfish.grizzly.threadpool.FixedThreadPool.onTaskQueued:(Ljava/lang/Runnable;)V
5: .line 70
return
6: .line 72
StackMap locals:
StackMap stack:
aload 0 /* this */
invokevirtual org.glassfish.grizzly.threadpool.FixedThreadPool.onTaskQueueOverflow:()V
7: .line 73
return
8: .line 75
StackMap locals:
StackMap stack:
new java.util.concurrent.RejectedExecutionException
dup
ldc "ThreadPool is not running"
invokespecial java.util.concurrent.RejectedExecutionException.<init>:(Ljava/lang/String;)V
athrow
end local 1 // java.lang.Runnable command
end local 0 // org.glassfish.grizzly.threadpool.FixedThreadPool this
LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lorg/glassfish/grizzly/threadpool/FixedThreadPool;
0 9 1 command Ljava/lang/Runnable;
MethodParameters:
Name Flags
command
}
SourceFile: "FixedThreadPool.java"
NestMembers:
org.glassfish.grizzly.threadpool.FixedThreadPool$BasicWorker
InnerClasses:
public abstract Worker = org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker of org.glassfish.grizzly.threadpool.AbstractThreadPool
private final BasicWorker = org.glassfish.grizzly.threadpool.FixedThreadPool$BasicWorker of org.glassfish.grizzly.threadpool.FixedThreadPool