class java.util.TimerThread extends java.lang.Thread
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: java.util.TimerThread
super_class: java.lang.Thread
{
boolean newTasksMayBeScheduled;
descriptor: Z
flags: (0x0000)
private java.util.TaskQueue queue;
descriptor: Ljava/util/TaskQueue;
flags: (0x0002) ACC_PRIVATE
void <init>(java.util.TaskQueue);
descriptor: (Ljava/util/TaskQueue;)V
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Thread.<init>:()V
1: aload 0
iconst_1
putfield java.util.TimerThread.newTasksMayBeScheduled:Z
2: aload 0
aload 1
putfield java.util.TimerThread.queue:Ljava/util/TaskQueue;
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljava/util/TimerThread;
0 4 1 queue Ljava/util/TaskQueue;
MethodParameters:
Name Flags
queue
public void run();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=1
start local 0 0: aload 0
invokevirtual java.util.TimerThread.mainLoop:()V
1: goto 11
StackMap locals:
StackMap stack: java.lang.Throwable
2: astore 1
3: aload 0
getfield java.util.TimerThread.queue:Ljava/util/TaskQueue;
dup
astore 2
monitorenter
4: aload 0
iconst_0
putfield java.util.TimerThread.newTasksMayBeScheduled:Z
5: aload 0
getfield java.util.TimerThread.queue:Ljava/util/TaskQueue;
invokevirtual java.util.TaskQueue.clear:()V
6: aload 2
monitorexit
7: goto 10
StackMap locals: java.util.TimerThread java.lang.Throwable java.util.TaskQueue
StackMap stack: java.lang.Throwable
8: aload 2
monitorexit
9: athrow
10: StackMap locals:
StackMap stack:
aload 1
athrow
11: StackMap locals:
StackMap stack:
aload 0
getfield java.util.TimerThread.queue:Ljava/util/TaskQueue;
dup
astore 2
monitorenter
12: aload 0
iconst_0
putfield java.util.TimerThread.newTasksMayBeScheduled:Z
13: aload 0
getfield java.util.TimerThread.queue:Ljava/util/TaskQueue;
invokevirtual java.util.TaskQueue.clear:()V
14: aload 2
monitorexit
15: goto 18
StackMap locals: java.util.TimerThread top java.util.TaskQueue
StackMap stack: java.lang.Throwable
16: aload 2
monitorexit
17: athrow
18: StackMap locals: java.util.TimerThread
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Ljava/util/TimerThread;
Exception table:
from to target type
0 2 2 any
4 7 8 any
8 9 8 any
12 15 16 any
16 17 16 any
private void mainLoop();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=9, args_size=1
start local 0 0: StackMap locals:
StackMap stack:
aload 0
getfield java.util.TimerThread.queue:Ljava/util/TaskQueue;
dup
astore 3
monitorenter
1: goto 3
2: StackMap locals: java.util.TimerThread top top java.util.TaskQueue
StackMap stack:
aload 0
getfield java.util.TimerThread.queue:Ljava/util/TaskQueue;
invokevirtual java.lang.Object.wait:()V
3: StackMap locals:
StackMap stack:
aload 0
getfield java.util.TimerThread.queue:Ljava/util/TaskQueue;
invokevirtual java.util.TaskQueue.isEmpty:()Z
ifeq 4
aload 0
getfield java.util.TimerThread.newTasksMayBeScheduled:Z
ifne 2
4: StackMap locals:
StackMap stack:
aload 0
getfield java.util.TimerThread.queue:Ljava/util/TaskQueue;
invokevirtual java.util.TaskQueue.isEmpty:()Z
ifeq 7
5: aload 3
monitorexit
6: goto 43
7: StackMap locals:
StackMap stack:
aload 0
getfield java.util.TimerThread.queue:Ljava/util/TaskQueue;
invokevirtual java.util.TaskQueue.getMin:()Ljava/util/TimerTask;
astore 1
start local 1 8: aload 1
getfield java.util.TimerTask.lock:Ljava/lang/Object;
dup
astore 8
monitorenter
9: aload 1
getfield java.util.TimerTask.state:I
iconst_3
if_icmpne 14
10: aload 0
getfield java.util.TimerThread.queue:Ljava/util/TaskQueue;
invokevirtual java.util.TaskQueue.removeMin:()V
11: aload 8
monitorexit
12: aload 3
monitorexit
13: goto 0
14: StackMap locals: java.util.TimerThread java.util.TimerTask top java.util.TaskQueue top top top top java.lang.Object
StackMap stack:
invokestatic java.lang.System.currentTimeMillis:()J
lstore 4
start local 4 15: aload 1
getfield java.util.TimerTask.nextExecutionTime:J
lstore 6
start local 6 16: lload 6
lload 4
lcmp
ifgt 17
iconst_1
goto 18
StackMap locals: java.util.TimerThread java.util.TimerTask top java.util.TaskQueue long long java.lang.Object
StackMap stack:
17: iconst_0
StackMap locals:
StackMap stack: int
18: dup
istore 2
start local 2 19: ifeq 28
20: aload 1
getfield java.util.TimerTask.period:J
lconst_0
lcmp
ifne 24
21: aload 0
getfield java.util.TimerThread.queue:Ljava/util/TaskQueue;
invokevirtual java.util.TaskQueue.removeMin:()V
22: aload 1
iconst_2
putfield java.util.TimerTask.state:I
23: goto 28
24: StackMap locals: java.util.TimerThread java.util.TimerTask int java.util.TaskQueue long long java.lang.Object
StackMap stack:
aload 0
getfield java.util.TimerThread.queue:Ljava/util/TaskQueue;
25: aload 1
getfield java.util.TimerTask.period:J
lconst_0
lcmp
ifge 26
lload 4
aload 1
getfield java.util.TimerTask.period:J
lsub
goto 27
26: StackMap locals:
StackMap stack: java.util.TaskQueue
lload 6
aload 1
getfield java.util.TimerTask.period:J
ladd
27: StackMap locals: java.util.TimerThread java.util.TimerTask int java.util.TaskQueue long long java.lang.Object
StackMap stack: java.util.TaskQueue long
invokevirtual java.util.TaskQueue.rescheduleMin:(J)V
28: StackMap locals:
StackMap stack:
aload 8
monitorexit
29: goto 32
end local 6 end local 4 end local 2 StackMap locals: java.util.TimerThread java.util.TimerTask top java.util.TaskQueue top top top top java.lang.Object
StackMap stack: java.lang.Throwable
30: aload 8
monitorexit
31: athrow
start local 2 start local 4 start local 6 32: StackMap locals: java.util.TimerThread java.util.TimerTask int java.util.TaskQueue long long
StackMap stack:
iload 2
ifne 34
33: aload 0
getfield java.util.TimerThread.queue:Ljava/util/TaskQueue;
lload 6
lload 4
lsub
invokevirtual java.lang.Object.wait:(J)V
end local 6 end local 4 34: StackMap locals:
StackMap stack:
aload 3
monitorexit
35: goto 38
end local 2 end local 1 StackMap locals: java.util.TimerThread top top java.util.TaskQueue
StackMap stack: java.lang.Throwable
36: aload 3
monitorexit
37: athrow
start local 1 start local 2 38: StackMap locals: java.util.TimerThread java.util.TimerTask int
StackMap stack:
iload 2
ifeq 0
39: aload 1
invokevirtual java.util.TimerTask.run:()V
end local 2 end local 1 40: goto 0
StackMap locals: java.util.TimerThread
StackMap stack: java.lang.InterruptedException
41: pop
42: goto 0
43: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 44 0 this Ljava/util/TimerThread;
8 36 1 task Ljava/util/TimerTask;
38 40 1 task Ljava/util/TimerTask;
19 30 2 taskFired Z
32 36 2 taskFired Z
38 40 2 taskFired Z
15 30 4 currentTime J
32 34 4 currentTime J
16 30 6 executionTime J
32 34 6 executionTime J
Exception table:
from to target type
9 12 30 any
14 29 30 any
30 31 30 any
1 6 36 any
7 13 36 any
14 35 36 any
36 37 36 any
0 6 41 Class java.lang.InterruptedException
7 13 41 Class java.lang.InterruptedException
14 40 41 Class java.lang.InterruptedException
}
SourceFile: "Timer.java"