class org.eclipse.jetty.util.thread.QueuedThreadPool$Runner implements java.lang.Runnable
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: org.eclipse.jetty.util.thread.QueuedThreadPool$Runner
super_class: java.lang.Object
{
final org.eclipse.jetty.util.thread.QueuedThreadPool this$0;
descriptor: Lorg/eclipse/jetty/util/thread/QueuedThreadPool;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
private void <init>(org.eclipse.jetty.util.thread.QueuedThreadPool);
descriptor: (Lorg/eclipse/jetty/util/thread/QueuedThreadPool;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 // org.eclipse.jetty.util.thread.QueuedThreadPool$Runner this
0: .line 843
aload 0 /* this */
aload 1
putfield org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.this$0:Lorg/eclipse/jetty/util/thread/QueuedThreadPool;
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
return
end local 0 // org.eclipse.jetty.util.thread.QueuedThreadPool$Runner this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/eclipse/jetty/util/thread/QueuedThreadPool$Runner;
MethodParameters:
Name Flags
this$0 final
private java.lang.Runnable idleJobPoll(long);
descriptor: (J)Ljava/lang/Runnable;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=3, args_size=2
start local 0 // org.eclipse.jetty.util.thread.QueuedThreadPool$Runner this
start local 1 // long idleTimeout
0: .line 847
lload 1 /* idleTimeout */
lconst_0
lcmp
ifgt 2
1: .line 848
aload 0 /* this */
getfield org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.this$0:Lorg/eclipse/jetty/util/thread/QueuedThreadPool;
getfield org.eclipse.jetty.util.thread.QueuedThreadPool._jobs:Ljava/util/concurrent/BlockingQueue;
invokeinterface java.util.concurrent.BlockingQueue.take:()Ljava/lang/Object;
checkcast java.lang.Runnable
areturn
2: .line 849
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.this$0:Lorg/eclipse/jetty/util/thread/QueuedThreadPool;
getfield org.eclipse.jetty.util.thread.QueuedThreadPool._jobs:Ljava/util/concurrent/BlockingQueue;
lload 1 /* idleTimeout */
getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
invokeinterface java.util.concurrent.BlockingQueue.poll:(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;
checkcast java.lang.Runnable
areturn
end local 1 // long idleTimeout
end local 0 // org.eclipse.jetty.util.thread.QueuedThreadPool$Runner this
LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/eclipse/jetty/util/thread/QueuedThreadPool$Runner;
0 3 1 idleTimeout J
Exceptions:
throws java.lang.InterruptedException
MethodParameters:
Name Flags
idleTimeout
public void run();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=12, args_size=1
start local 0 // org.eclipse.jetty.util.thread.QueuedThreadPool$Runner this
0: .line 855
getstatic org.eclipse.jetty.util.thread.QueuedThreadPool.LOG:Lorg/slf4j/Logger;
invokeinterface org.slf4j.Logger.isDebugEnabled:()Z
ifeq 2
1: .line 856
getstatic org.eclipse.jetty.util.thread.QueuedThreadPool.LOG:Lorg/slf4j/Logger;
ldc "Runner started for {}"
aload 0 /* this */
getfield org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.this$0:Lorg/eclipse/jetty/util/thread/QueuedThreadPool;
invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;)V
2: .line 858
StackMap locals:
StackMap stack:
iconst_1
istore 1 /* idle */
start local 1 // boolean idle
3: .line 861
aconst_null
astore 2 /* job */
start local 2 // java.lang.Runnable job
4: .line 865
StackMap locals: int java.lang.Runnable
StackMap stack:
aload 2 /* job */
ifnull 8
5: .line 867
iconst_1
istore 1 /* idle */
6: .line 869
aload 0 /* this */
getfield org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.this$0:Lorg/eclipse/jetty/util/thread/QueuedThreadPool;
iconst_0
iconst_1
invokevirtual org.eclipse.jetty.util.thread.QueuedThreadPool.addCounts:(II)Z
ifne 10
7: .line 870
goto 55
8: .line 873
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.this$0:Lorg/eclipse/jetty/util/thread/QueuedThreadPool;
getfield org.eclipse.jetty.util.thread.QueuedThreadPool._counts:Lorg/eclipse/jetty/util/AtomicBiInteger;
invokevirtual org.eclipse.jetty.util.AtomicBiInteger.getHi:()I
ldc -2147483648
if_icmpne 10
9: .line 875
goto 55
10: .line 881
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.this$0:Lorg/eclipse/jetty/util/thread/QueuedThreadPool;
getfield org.eclipse.jetty.util.thread.QueuedThreadPool._jobs:Ljava/util/concurrent/BlockingQueue;
invokeinterface java.util.concurrent.BlockingQueue.poll:()Ljava/lang/Object;
checkcast java.lang.Runnable
astore 2 /* job */
11: .line 882
aload 2 /* job */
ifnonnull 25
12: .line 885
aload 0 /* this */
getfield org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.this$0:Lorg/eclipse/jetty/util/thread/QueuedThreadPool;
invokevirtual org.eclipse.jetty.util.thread.QueuedThreadPool.getIdleTimeout:()I
i2l
lstore 3 /* idleTimeout */
start local 3 // long idleTimeout
13: .line 886
lload 3 /* idleTimeout */
lconst_0
lcmp
ifle 21
aload 0 /* this */
getfield org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.this$0:Lorg/eclipse/jetty/util/thread/QueuedThreadPool;
invokevirtual org.eclipse.jetty.util.thread.QueuedThreadPool.getThreads:()I
aload 0 /* this */
getfield org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.this$0:Lorg/eclipse/jetty/util/thread/QueuedThreadPool;
getfield org.eclipse.jetty.util.thread.QueuedThreadPool._minThreads:I
if_icmple 21
14: .line 888
aload 0 /* this */
getfield org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.this$0:Lorg/eclipse/jetty/util/thread/QueuedThreadPool;
getfield org.eclipse.jetty.util.thread.QueuedThreadPool._lastShrink:Ljava/util/concurrent/atomic/AtomicLong;
invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
lstore 5 /* last */
start local 5 // long last
15: .line 889
invokestatic java.lang.System.nanoTime:()J
lstore 7 /* now */
start local 7 // long now
16: .line 890
lload 7 /* now */
lload 5 /* last */
lsub
getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
lload 3 /* idleTimeout */
invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
lcmp
ifle 21
aload 0 /* this */
getfield org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.this$0:Lorg/eclipse/jetty/util/thread/QueuedThreadPool;
getfield org.eclipse.jetty.util.thread.QueuedThreadPool._lastShrink:Ljava/util/concurrent/atomic/AtomicLong;
lload 5 /* last */
lload 7 /* now */
invokevirtual java.util.concurrent.atomic.AtomicLong.compareAndSet:(JJ)Z
ifeq 21
17: .line 892
getstatic org.eclipse.jetty.util.thread.QueuedThreadPool.LOG:Lorg/slf4j/Logger;
invokeinterface org.slf4j.Logger.isDebugEnabled:()Z
ifeq 19
18: .line 893
getstatic org.eclipse.jetty.util.thread.QueuedThreadPool.LOG:Lorg/slf4j/Logger;
ldc "shrinking {}"
aload 0 /* this */
getfield org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.this$0:Lorg/eclipse/jetty/util/thread/QueuedThreadPool;
invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;)V
19: .line 929
StackMap locals: long long long
StackMap stack:
invokestatic java.lang.Thread.interrupted:()Z
pop
20: .line 894
goto 55
end local 7 // long now
end local 5 // long last
21: .line 899
StackMap locals:
StackMap stack:
aload 0 /* this */
lload 3 /* idleTimeout */
invokevirtual org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.idleJobPoll:(J)Ljava/lang/Runnable;
astore 2 /* job */
22: .line 902
aload 2 /* job */
ifnonnull 25
23: .line 929
invokestatic java.lang.Thread.interrupted:()Z
pop
24: .line 904
goto 4
end local 3 // long idleTimeout
25: .line 907
StackMap locals:
StackMap stack:
iconst_0
istore 1 /* idle */
26: .line 910
getstatic org.eclipse.jetty.util.thread.QueuedThreadPool.LOG:Lorg/slf4j/Logger;
invokeinterface org.slf4j.Logger.isDebugEnabled:()Z
ifeq 28
27: .line 911
getstatic org.eclipse.jetty.util.thread.QueuedThreadPool.LOG:Lorg/slf4j/Logger;
ldc "run {} in {}"
aload 2 /* job */
aload 0 /* this */
getfield org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.this$0:Lorg/eclipse/jetty/util/thread/QueuedThreadPool;
invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
28: .line 912
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.this$0:Lorg/eclipse/jetty/util/thread/QueuedThreadPool;
aload 2 /* job */
invokevirtual org.eclipse.jetty.util.thread.QueuedThreadPool.runJob:(Ljava/lang/Runnable;)V
29: .line 913
getstatic org.eclipse.jetty.util.thread.QueuedThreadPool.LOG:Lorg/slf4j/Logger;
invokeinterface org.slf4j.Logger.isDebugEnabled:()Z
ifeq 43
30: .line 914
getstatic org.eclipse.jetty.util.thread.QueuedThreadPool.LOG:Lorg/slf4j/Logger;
ldc "ran {} in {}"
aload 2 /* job */
aload 0 /* this */
getfield org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.this$0:Lorg/eclipse/jetty/util/thread/QueuedThreadPool;
invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
31: .line 915
goto 43
32: .line 916
StackMap locals:
StackMap stack: java.lang.InterruptedException
astore 3 /* e */
start local 3 // java.lang.InterruptedException e
33: .line 918
getstatic org.eclipse.jetty.util.thread.QueuedThreadPool.LOG:Lorg/slf4j/Logger;
invokeinterface org.slf4j.Logger.isDebugEnabled:()Z
ifeq 35
34: .line 919
getstatic org.eclipse.jetty.util.thread.QueuedThreadPool.LOG:Lorg/slf4j/Logger;
ldc "interrupted {} in {}"
aload 2 /* job */
aload 0 /* this */
getfield org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.this$0:Lorg/eclipse/jetty/util/thread/QueuedThreadPool;
invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
35: .line 920
StackMap locals: java.lang.InterruptedException
StackMap stack:
getstatic org.eclipse.jetty.util.thread.QueuedThreadPool.LOG:Lorg/slf4j/Logger;
ldc "IGNORED"
aload 3 /* e */
invokeinterface org.slf4j.Logger.trace:(Ljava/lang/String;Ljava/lang/Throwable;)V
end local 3 // java.lang.InterruptedException e
36: .line 929
invokestatic java.lang.Thread.interrupted:()Z
pop
goto 4
37: .line 922
StackMap locals: org.eclipse.jetty.util.thread.QueuedThreadPool$Runner int java.lang.Runnable
StackMap stack: java.lang.Throwable
astore 3 /* e */
start local 3 // java.lang.Throwable e
38: .line 924
getstatic org.eclipse.jetty.util.thread.QueuedThreadPool.LOG:Lorg/slf4j/Logger;
ldc "Job failed"
aload 3 /* e */
invokeinterface org.slf4j.Logger.warn:(Ljava/lang/String;Ljava/lang/Throwable;)V
end local 3 // java.lang.Throwable e
39: .line 929
invokestatic java.lang.Thread.interrupted:()Z
pop
goto 4
40: .line 927
StackMap locals:
StackMap stack: java.lang.Throwable
astore 9
41: .line 929
invokestatic java.lang.Thread.interrupted:()Z
pop
42: .line 930
aload 9
athrow
43: .line 929
StackMap locals:
StackMap stack:
invokestatic java.lang.Thread.interrupted:()Z
pop
44: .line 862
goto 4
end local 2 // java.lang.Runnable job
45: .line 934
StackMap locals: org.eclipse.jetty.util.thread.QueuedThreadPool$Runner int
StackMap stack: java.lang.Throwable
astore 10
46: .line 935
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
astore 11 /* thread */
start local 11 // java.lang.Thread thread
47: .line 936
aload 0 /* this */
getfield org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.this$0:Lorg/eclipse/jetty/util/thread/QueuedThreadPool;
aload 11 /* thread */
invokevirtual org.eclipse.jetty.util.thread.QueuedThreadPool.removeThread:(Ljava/lang/Thread;)V
48: .line 939
aload 0 /* this */
getfield org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.this$0:Lorg/eclipse/jetty/util/thread/QueuedThreadPool;
iconst_m1
iload 1 /* idle */
ifeq 49
iconst_m1
goto 50
StackMap locals: org.eclipse.jetty.util.thread.QueuedThreadPool$Runner int top top top top top top top top java.lang.Throwable java.lang.Thread
StackMap stack: org.eclipse.jetty.util.thread.QueuedThreadPool int
49: iconst_0
StackMap locals: org.eclipse.jetty.util.thread.QueuedThreadPool$Runner int top top top top top top top top java.lang.Throwable java.lang.Thread
StackMap stack: org.eclipse.jetty.util.thread.QueuedThreadPool int int
50: invokevirtual org.eclipse.jetty.util.thread.QueuedThreadPool.addCounts:(II)Z
pop
51: .line 940
getstatic org.eclipse.jetty.util.thread.QueuedThreadPool.LOG:Lorg/slf4j/Logger;
invokeinterface org.slf4j.Logger.isDebugEnabled:()Z
ifeq 53
52: .line 941
getstatic org.eclipse.jetty.util.thread.QueuedThreadPool.LOG:Lorg/slf4j/Logger;
ldc "{} exited for {}"
aload 11 /* thread */
aload 0 /* this */
getfield org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.this$0:Lorg/eclipse/jetty/util/thread/QueuedThreadPool;
invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
53: .line 945
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.this$0:Lorg/eclipse/jetty/util/thread/QueuedThreadPool;
invokevirtual org.eclipse.jetty.util.thread.QueuedThreadPool.ensureThreads:()V
end local 11 // java.lang.Thread thread
54: .line 946
aload 10
athrow
55: .line 935
StackMap locals: org.eclipse.jetty.util.thread.QueuedThreadPool$Runner int
StackMap stack:
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
astore 11 /* thread */
start local 11 // java.lang.Thread thread
56: .line 936
aload 0 /* this */
getfield org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.this$0:Lorg/eclipse/jetty/util/thread/QueuedThreadPool;
aload 11 /* thread */
invokevirtual org.eclipse.jetty.util.thread.QueuedThreadPool.removeThread:(Ljava/lang/Thread;)V
57: .line 939
aload 0 /* this */
getfield org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.this$0:Lorg/eclipse/jetty/util/thread/QueuedThreadPool;
iconst_m1
iload 1 /* idle */
ifeq 58
iconst_m1
goto 59
StackMap locals: org.eclipse.jetty.util.thread.QueuedThreadPool$Runner int top top top top top top top top top java.lang.Thread
StackMap stack: org.eclipse.jetty.util.thread.QueuedThreadPool int
58: iconst_0
StackMap locals: org.eclipse.jetty.util.thread.QueuedThreadPool$Runner int top top top top top top top top top java.lang.Thread
StackMap stack: org.eclipse.jetty.util.thread.QueuedThreadPool int int
59: invokevirtual org.eclipse.jetty.util.thread.QueuedThreadPool.addCounts:(II)Z
pop
60: .line 940
getstatic org.eclipse.jetty.util.thread.QueuedThreadPool.LOG:Lorg/slf4j/Logger;
invokeinterface org.slf4j.Logger.isDebugEnabled:()Z
ifeq 62
61: .line 941
getstatic org.eclipse.jetty.util.thread.QueuedThreadPool.LOG:Lorg/slf4j/Logger;
ldc "{} exited for {}"
aload 11 /* thread */
aload 0 /* this */
getfield org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.this$0:Lorg/eclipse/jetty/util/thread/QueuedThreadPool;
invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
62: .line 945
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.this$0:Lorg/eclipse/jetty/util/thread/QueuedThreadPool;
invokevirtual org.eclipse.jetty.util.thread.QueuedThreadPool.ensureThreads:()V
end local 11 // java.lang.Thread thread
63: .line 947
return
end local 1 // boolean idle
end local 0 // org.eclipse.jetty.util.thread.QueuedThreadPool$Runner this
LocalVariableTable:
Start End Slot Name Signature
0 64 0 this Lorg/eclipse/jetty/util/thread/QueuedThreadPool$Runner;
3 64 1 idle Z
4 45 2 job Ljava/lang/Runnable;
13 25 3 idleTimeout J
15 21 5 last J
16 21 7 now J
33 36 3 e Ljava/lang/InterruptedException;
38 39 3 e Ljava/lang/Throwable;
47 54 11 thread Ljava/lang/Thread;
56 63 11 thread Ljava/lang/Thread;
Exception table:
from to target type
10 19 32 Class java.lang.InterruptedException
21 23 32 Class java.lang.InterruptedException
25 31 32 Class java.lang.InterruptedException
10 19 37 Class java.lang.Throwable
21 23 37 Class java.lang.Throwable
25 31 37 Class java.lang.Throwable
10 19 40 any
21 23 40 any
25 36 40 any
37 39 40 any
3 45 45 any
}
SourceFile: "QueuedThreadPool.java"
NestHost: org.eclipse.jetty.util.thread.QueuedThreadPool
InnerClasses:
private Runner = org.eclipse.jetty.util.thread.QueuedThreadPool$Runner of org.eclipse.jetty.util.thread.QueuedThreadPool