class io.vertx.core.impl.BlockedThreadChecker$1 extends java.util.TimerTask
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: io.vertx.core.impl.BlockedThreadChecker$1
super_class: java.util.TimerTask
{
final io.vertx.core.impl.BlockedThreadChecker this$0;
descriptor: Lio/vertx/core/impl/BlockedThreadChecker;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
private final java.util.concurrent.TimeUnit val$warningExceptionTimeUnit;
descriptor: Ljava/util/concurrent/TimeUnit;
flags: (0x1012) ACC_PRIVATE, ACC_FINAL, ACC_SYNTHETIC
private final long val$warningExceptionTime;
descriptor: J
flags: (0x1012) ACC_PRIVATE, ACC_FINAL, ACC_SYNTHETIC
void <init>(io.vertx.core.impl.BlockedThreadChecker, java.util.concurrent.TimeUnit, long);
descriptor: (Lio/vertx/core/impl/BlockedThreadChecker;Ljava/util/concurrent/TimeUnit;J)V
flags: (0x0000)
Code:
stack=3, locals=5, args_size=4
start local 0 0: aload 0
aload 1
putfield io.vertx.core.impl.BlockedThreadChecker$1.this$0:Lio/vertx/core/impl/BlockedThreadChecker;
aload 0
aload 2
putfield io.vertx.core.impl.BlockedThreadChecker$1.val$warningExceptionTimeUnit:Ljava/util/concurrent/TimeUnit;
aload 0
lload 3
putfield io.vertx.core.impl.BlockedThreadChecker$1.val$warningExceptionTime:J
aload 0
invokespecial java.util.TimerTask.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/vertx/core/impl/BlockedThreadChecker$1;
MethodParameters:
Name Flags
this$0 final
val$warningExceptionTimeUnit final
val$warningExceptionTime final
public void run();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=17, args_size=1
start local 0 0: aload 0
getfield io.vertx.core.impl.BlockedThreadChecker$1.this$0:Lio/vertx/core/impl/BlockedThreadChecker;
dup
astore 1
monitorenter
1: invokestatic java.lang.System.nanoTime:()J
lstore 2
start local 2 2: aload 0
getfield io.vertx.core.impl.BlockedThreadChecker$1.this$0:Lio/vertx/core/impl/BlockedThreadChecker;
getfield io.vertx.core.impl.BlockedThreadChecker.threads:Ljava/util/Map;
invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 5
goto 17
StackMap locals: io.vertx.core.impl.BlockedThreadChecker$1 io.vertx.core.impl.BlockedThreadChecker long top java.util.Iterator
StackMap stack:
3: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.util.Map$Entry
astore 4
start local 4 4: aload 4
invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
checkcast io.vertx.core.impl.BlockedThreadChecker$Task
invokeinterface io.vertx.core.impl.BlockedThreadChecker$Task.startTime:()J
lstore 6
start local 6 5: lload 2
lload 6
lsub
lstore 8
start local 8 6: aload 4
invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
checkcast io.vertx.core.impl.BlockedThreadChecker$Task
invokeinterface io.vertx.core.impl.BlockedThreadChecker$Task.maxExecTime:()J
lstore 10
start local 10 7: aload 4
invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
checkcast io.vertx.core.impl.BlockedThreadChecker$Task
invokeinterface io.vertx.core.impl.BlockedThreadChecker$Task.maxExecTimeUnit:()Ljava/util/concurrent/TimeUnit;
astore 12
start local 12 8: aload 12
lload 8
getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
invokevirtual java.util.concurrent.TimeUnit.convert:(JLjava/util/concurrent/TimeUnit;)J
lstore 13
start local 13 9: lload 6
lconst_0
lcmp
ifeq 17
lload 13
lload 10
lcmp
iflt 17
10: new java.lang.StringBuilder
dup
ldc "Thread "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 4
invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " has been blocked for "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
lload 8
ldc 1000000
ldiv
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc " ms, time limit is "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
lload 10
aload 12
invokevirtual java.util.concurrent.TimeUnit.convert:(JLjava/util/concurrent/TimeUnit;)J
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc " ms"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 15
start local 15 11: aload 0
getfield io.vertx.core.impl.BlockedThreadChecker$1.val$warningExceptionTimeUnit:Ljava/util/concurrent/TimeUnit;
lload 8
getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
invokevirtual java.util.concurrent.TimeUnit.convert:(JLjava/util/concurrent/TimeUnit;)J
aload 0
getfield io.vertx.core.impl.BlockedThreadChecker$1.val$warningExceptionTime:J
lcmp
ifgt 14
12: getstatic io.vertx.core.impl.BlockedThreadChecker.log:Lio/vertx/core/impl/logging/Logger;
aload 15
invokeinterface io.vertx.core.impl.logging.Logger.warn:(Ljava/lang/Object;)V
13: goto 17
14: StackMap locals: io.vertx.core.impl.BlockedThreadChecker$1 io.vertx.core.impl.BlockedThreadChecker long java.util.Map$Entry java.util.Iterator long long long java.util.concurrent.TimeUnit long java.lang.String
StackMap stack:
new io.vertx.core.VertxException
dup
ldc "Thread blocked"
invokespecial io.vertx.core.VertxException.<init>:(Ljava/lang/String;)V
astore 16
start local 16 15: aload 16
aload 4
invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
checkcast java.lang.Thread
invokevirtual java.lang.Thread.getStackTrace:()[Ljava/lang/StackTraceElement;
invokevirtual io.vertx.core.VertxException.setStackTrace:([Ljava/lang/StackTraceElement;)V
16: getstatic io.vertx.core.impl.BlockedThreadChecker.log:Lio/vertx/core/impl/logging/Logger;
aload 15
aload 16
invokeinterface io.vertx.core.impl.logging.Logger.warn:(Ljava/lang/Object;Ljava/lang/Throwable;)V
end local 16 end local 15 end local 13 end local 12 end local 10 end local 8 end local 6 end local 4 17: StackMap locals: io.vertx.core.impl.BlockedThreadChecker$1 io.vertx.core.impl.BlockedThreadChecker long top java.util.Iterator
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 3
end local 2 18: aload 1
monitorexit
19: goto 22
StackMap locals: io.vertx.core.impl.BlockedThreadChecker$1 io.vertx.core.impl.BlockedThreadChecker
StackMap stack: java.lang.Throwable
20: aload 1
monitorexit
21: athrow
22: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 23 0 this Lio/vertx/core/impl/BlockedThreadChecker$1;
2 18 2 now J
4 17 4 entry Ljava/util/Map$Entry<Ljava/lang/Thread;Lio/vertx/core/impl/BlockedThreadChecker$Task;>;
5 17 6 execStart J
6 17 8 dur J
7 17 10 timeLimit J
8 17 12 maxExecTimeUnit Ljava/util/concurrent/TimeUnit;
9 17 13 val J
11 17 15 message Ljava/lang/String;
15 17 16 stackTrace Lio/vertx/core/VertxException;
Exception table:
from to target type
1 19 20 any
20 21 20 any
}
SourceFile: "BlockedThreadChecker.java"
EnclosingMethod: io.vertx.core.impl.BlockedThreadChecker.<init>:(JLjava/util/concurrent/TimeUnit;JLjava/util/concurrent/TimeUnit;)V
NestHost: io.vertx.core.impl.BlockedThreadChecker
InnerClasses:
io.vertx.core.impl.BlockedThreadChecker$1
public abstract Task = io.vertx.core.impl.BlockedThreadChecker$Task of io.vertx.core.impl.BlockedThreadChecker
public abstract Entry = java.util.Map$Entry of java.util.Map