class sun.misc.TimerTickThread extends java.lang.Thread
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: sun.misc.TimerTickThread
super_class: java.lang.Thread
{
static final int MAX_POOL_SIZE;
descriptor: I
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 3
static int curPoolSize;
descriptor: I
flags: (0x0008) ACC_STATIC
static sun.misc.TimerTickThread pool;
descriptor: Lsun/misc/TimerTickThread;
flags: (0x0008) ACC_STATIC
sun.misc.TimerTickThread next;
descriptor: Lsun/misc/TimerTickThread;
flags: (0x0000)
sun.misc.Timer timer;
descriptor: Lsun/misc/Timer;
flags: (0x0000)
long lastSleepUntil;
descriptor: J
flags: (0x0000)
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: iconst_0
putstatic sun.misc.TimerTickThread.curPoolSize:I
1: aconst_null
putstatic sun.misc.TimerTickThread.pool:Lsun/misc/TimerTickThread;
return
LocalVariableTable:
Start End Slot Name Signature
void <init>();
descriptor: ()V
flags: (0x0000)
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Thread.<init>:()V
1: aload 0
aconst_null
putfield sun.misc.TimerTickThread.next:Lsun/misc/TimerTickThread;
2: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/misc/TimerTickThread;
protected static synchronized sun.misc.TimerTickThread call(sun.misc.Timer, long);
descriptor: (Lsun/misc/Timer;J)Lsun/misc/TimerTickThread;
flags: (0x002c) ACC_PROTECTED, ACC_STATIC, ACC_SYNCHRONIZED
Code:
stack=3, locals=5, args_size=2
start local 0 start local 1 0: getstatic sun.misc.TimerTickThread.pool:Lsun/misc/TimerTickThread;
astore 3
start local 3 1: aload 3
ifnonnull 7
2: new sun.misc.TimerTickThread
dup
invokespecial sun.misc.TimerTickThread.<init>:()V
astore 3
3: aload 3
aload 0
putfield sun.misc.TimerTickThread.timer:Lsun/misc/Timer;
4: aload 3
lload 1
putfield sun.misc.TimerTickThread.lastSleepUntil:J
5: aload 3
invokevirtual sun.misc.TimerTickThread.start:()V
6: goto 16
7: StackMap locals: sun.misc.TimerTickThread
StackMap stack:
getstatic sun.misc.TimerTickThread.pool:Lsun/misc/TimerTickThread;
getfield sun.misc.TimerTickThread.next:Lsun/misc/TimerTickThread;
putstatic sun.misc.TimerTickThread.pool:Lsun/misc/TimerTickThread;
8: aload 3
aload 0
putfield sun.misc.TimerTickThread.timer:Lsun/misc/Timer;
9: aload 3
lload 1
putfield sun.misc.TimerTickThread.lastSleepUntil:J
10: aload 3
dup
astore 4
monitorenter
11: aload 3
invokevirtual java.lang.Object.notify:()V
12: aload 4
monitorexit
13: goto 16
StackMap locals: sun.misc.Timer long sun.misc.TimerTickThread sun.misc.TimerTickThread
StackMap stack: java.lang.Throwable
14: aload 4
monitorexit
15: athrow
16: StackMap locals:
StackMap stack:
aload 3
areturn
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 timer Lsun/misc/Timer;
0 17 1 sleepUntil J
1 17 3 thread Lsun/misc/TimerTickThread;
Exception table:
from to target type
11 13 14 any
14 15 14 any
MethodParameters:
Name Flags
timer
sleepUntil
private boolean returnToPool();
descriptor: ()Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
dup
astore 1
monitorenter
1: getstatic sun.misc.TimerTickThread.curPoolSize:I
iconst_3
if_icmplt 4
2: aload 1
monitorexit
3: iconst_0
ireturn
4: StackMap locals: java.lang.Class
StackMap stack:
aload 0
getstatic sun.misc.TimerTickThread.pool:Lsun/misc/TimerTickThread;
putfield sun.misc.TimerTickThread.next:Lsun/misc/TimerTickThread;
5: aload 0
putstatic sun.misc.TimerTickThread.pool:Lsun/misc/TimerTickThread;
6: getstatic sun.misc.TimerTickThread.curPoolSize:I
iconst_1
iadd
putstatic sun.misc.TimerTickThread.curPoolSize:I
7: aload 0
aconst_null
putfield sun.misc.TimerTickThread.timer:Lsun/misc/Timer;
8: aload 1
monitorexit
9: goto 20
StackMap locals:
StackMap stack: java.lang.Throwable
10: aload 1
monitorexit
11: athrow
12: StackMap locals:
StackMap stack:
aload 0
dup
astore 1
monitorenter
13: aload 0
invokevirtual java.lang.Object.wait:()V
14: goto 16
StackMap locals: sun.misc.TimerTickThread sun.misc.TimerTickThread
StackMap stack: java.lang.InterruptedException
15: pop
16: StackMap locals:
StackMap stack:
aload 1
monitorexit
17: goto 20
StackMap locals:
StackMap stack: java.lang.Throwable
18: aload 1
monitorexit
19: athrow
20: StackMap locals:
StackMap stack:
aload 0
getfield sun.misc.TimerTickThread.timer:Lsun/misc/Timer;
ifnull 12
21: aload 0
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
dup
astore 1
monitorenter
22: getstatic sun.misc.TimerTickThread.curPoolSize:I
iconst_1
isub
putstatic sun.misc.TimerTickThread.curPoolSize:I
23: aload 1
monitorexit
24: goto 27
StackMap locals: sun.misc.TimerTickThread java.lang.Class
StackMap stack: java.lang.Throwable
25: aload 1
monitorexit
26: athrow
27: StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 28 0 this Lsun/misc/TimerTickThread;
Exception table:
from to target type
1 3 10 any
4 9 10 any
10 11 10 any
13 14 15 Class java.lang.InterruptedException
13 17 18 any
18 19 18 any
22 24 25 any
25 26 25 any
public void run();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=1
start local 0 0: StackMap locals:
StackMap stack:
aload 0
getfield sun.misc.TimerTickThread.timer:Lsun/misc/Timer;
getfield sun.misc.Timer.owner:Lsun/misc/Timeable;
aload 0
getfield sun.misc.TimerTickThread.timer:Lsun/misc/Timer;
invokeinterface sun.misc.Timeable.tick:(Lsun/misc/Timer;)V
1: getstatic sun.misc.TimerThread.timerThread:Lsun/misc/TimerThread;
dup
astore 1
monitorenter
2: aload 0
getfield sun.misc.TimerTickThread.timer:Lsun/misc/Timer;
dup
astore 2
monitorenter
3: aload 0
getfield sun.misc.TimerTickThread.lastSleepUntil:J
aload 0
getfield sun.misc.TimerTickThread.timer:Lsun/misc/Timer;
getfield sun.misc.Timer.sleepUntil:J
lcmp
ifne 5
4: aload 0
getfield sun.misc.TimerTickThread.timer:Lsun/misc/Timer;
invokestatic sun.misc.TimerThread.requeue:(Lsun/misc/Timer;)V
5: StackMap locals: sun.misc.TimerThread sun.misc.Timer
StackMap stack:
aload 2
monitorexit
6: goto 9
StackMap locals:
StackMap stack: java.lang.Throwable
7: aload 2
monitorexit
8: athrow
9: StackMap locals:
StackMap stack:
aload 1
monitorexit
10: goto 13
StackMap locals:
StackMap stack: java.lang.Throwable
11: aload 1
monitorexit
12: athrow
13: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.misc.TimerTickThread.returnToPool:()Z
ifne 0
14: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lsun/misc/TimerTickThread;
Exception table:
from to target type
3 6 7 any
7 8 7 any
2 10 11 any
11 12 11 any
}
SourceFile: "Timer.java"