class javax.management.monitor.Monitor$MonitorTask implements java.lang.Runnable
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: javax.management.monitor.Monitor$MonitorTask
super_class: java.lang.Object
{
private java.util.concurrent.ThreadPoolExecutor executor;
descriptor: Ljava/util/concurrent/ThreadPoolExecutor;
flags: (0x0002) ACC_PRIVATE
final javax.management.monitor.Monitor this$0;
descriptor: Ljavax/management/monitor/Monitor;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
public void <init>(javax.management.monitor.Monitor);
descriptor: (Ljavax/management/monitor/Monitor;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=14, locals=9, args_size=2
start local 0 0: aload 0
aload 1
putfield javax.management.monitor.Monitor$MonitorTask.this$0:Ljavax/management/monitor/Monitor;
aload 0
invokespecial java.lang.Object.<init>:()V
1: invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
astore 2
start local 2 2: aload 2
ifnull 3
aload 2
invokevirtual java.lang.SecurityManager.getThreadGroup:()Ljava/lang/ThreadGroup;
goto 4
3: StackMap locals: javax.management.monitor.Monitor$MonitorTask javax.management.monitor.Monitor java.lang.SecurityManager
StackMap stack:
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.getThreadGroup:()Ljava/lang/ThreadGroup;
4: StackMap locals:
StackMap stack: java.lang.ThreadGroup
astore 3
start local 3 5: getstatic javax.management.monitor.Monitor.executorsLock:Ljava/lang/Object;
dup
astore 4
monitorenter
6: getstatic javax.management.monitor.Monitor.executors:Ljava/util/Map;
invokeinterface java.util.Map.keySet:()Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 6
goto 14
StackMap locals: javax.management.monitor.Monitor$MonitorTask javax.management.monitor.Monitor java.lang.SecurityManager java.lang.ThreadGroup java.lang.Object top java.util.Iterator
StackMap stack:
7: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.util.concurrent.ThreadPoolExecutor
astore 5
start local 5 8: aload 5
invokevirtual java.util.concurrent.ThreadPoolExecutor.getThreadFactory:()Ljava/util/concurrent/ThreadFactory;
checkcast javax.management.monitor.Monitor$DaemonThreadFactory
9: astore 7
start local 7 10: aload 7
invokevirtual javax.management.monitor.Monitor$DaemonThreadFactory.getThreadGroup:()Ljava/lang/ThreadGroup;
astore 8
start local 8 11: aload 8
aload 3
if_acmpne 14
12: aload 0
aload 5
putfield javax.management.monitor.Monitor$MonitorTask.executor:Ljava/util/concurrent/ThreadPoolExecutor;
13: goto 15
end local 8 end local 7 end local 5 14: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 7
15: StackMap locals: javax.management.monitor.Monitor$MonitorTask javax.management.monitor.Monitor java.lang.SecurityManager java.lang.ThreadGroup java.lang.Object
StackMap stack:
aload 0
getfield javax.management.monitor.Monitor$MonitorTask.executor:Ljava/util/concurrent/ThreadPoolExecutor;
ifnonnull 28
16: aload 0
new java.util.concurrent.ThreadPoolExecutor
dup
17: getstatic javax.management.monitor.Monitor.maximumPoolSize:I
18: getstatic javax.management.monitor.Monitor.maximumPoolSize:I
19: ldc 60
20: getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
21: new java.util.concurrent.LinkedBlockingQueue
dup
invokespecial java.util.concurrent.LinkedBlockingQueue.<init>:()V
22: new javax.management.monitor.Monitor$DaemonThreadFactory
dup
new java.lang.StringBuilder
dup
ldc "ThreadGroup<"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
23: aload 3
invokevirtual java.lang.ThreadGroup.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "> Executor"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 3
24: invokespecial javax.management.monitor.Monitor$DaemonThreadFactory.<init>:(Ljava/lang/String;Ljava/lang/ThreadGroup;)V
invokespecial java.util.concurrent.ThreadPoolExecutor.<init>:(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ThreadFactory;)V
25: putfield javax.management.monitor.Monitor$MonitorTask.executor:Ljava/util/concurrent/ThreadPoolExecutor;
26: aload 0
getfield javax.management.monitor.Monitor$MonitorTask.executor:Ljava/util/concurrent/ThreadPoolExecutor;
iconst_1
invokevirtual java.util.concurrent.ThreadPoolExecutor.allowCoreThreadTimeOut:(Z)V
27: getstatic javax.management.monitor.Monitor.executors:Ljava/util/Map;
aload 0
getfield javax.management.monitor.Monitor$MonitorTask.executor:Ljava/util/concurrent/ThreadPoolExecutor;
aconst_null
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
28: StackMap locals:
StackMap stack:
aload 4
monitorexit
29: goto 32
StackMap locals:
StackMap stack: java.lang.Throwable
30: aload 4
monitorexit
31: athrow
32: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 33 0 this Ljavax/management/monitor/Monitor$MonitorTask;
2 33 2 s Ljava/lang/SecurityManager;
5 33 3 group Ljava/lang/ThreadGroup;
8 14 5 e Ljava/util/concurrent/ThreadPoolExecutor;
10 14 7 tf Ljavax/management/monitor/Monitor$DaemonThreadFactory;
11 14 8 tg Ljava/lang/ThreadGroup;
Exception table:
from to target type
6 29 30 any
30 31 30 any
MethodParameters:
Name Flags
this$0 final
public java.util.concurrent.Future<?> submit();
descriptor: ()Ljava/util/concurrent/Future;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield javax.management.monitor.Monitor$MonitorTask.executor:Ljava/util/concurrent/ThreadPoolExecutor;
aload 0
invokevirtual java.util.concurrent.ThreadPoolExecutor.submit:(Ljava/lang/Runnable;)Ljava/util/concurrent/Future;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljavax/management/monitor/Monitor$MonitorTask;
Signature: ()Ljava/util/concurrent/Future<*>;
public void run();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=5, args_size=1
start local 0 0: aload 0
getfield javax.management.monitor.Monitor$MonitorTask.this$0:Ljavax/management/monitor/Monitor;
dup
astore 3
monitorenter
1: aload 0
getfield javax.management.monitor.Monitor$MonitorTask.this$0:Ljavax/management/monitor/Monitor;
getfield javax.management.monitor.Monitor.schedulerFuture:Ljava/util/concurrent/ScheduledFuture;
astore 1
start local 1 2: aload 0
getfield javax.management.monitor.Monitor$MonitorTask.this$0:Ljavax/management/monitor/Monitor;
getfield javax.management.monitor.Monitor.acc:Ljava/security/AccessControlContext;
astore 2
start local 2 3: aload 3
monitorexit
4: goto 7
end local 2 end local 1 StackMap locals: javax.management.monitor.Monitor$MonitorTask top top javax.management.monitor.Monitor
StackMap stack: java.lang.Throwable
5: aload 3
monitorexit
6: athrow
start local 1 start local 2 7: StackMap locals: javax.management.monitor.Monitor$MonitorTask java.util.concurrent.ScheduledFuture java.security.AccessControlContext
StackMap stack:
new javax.management.monitor.Monitor$MonitorTask$1
dup
aload 0
invokespecial javax.management.monitor.Monitor$MonitorTask$1.<init>:(Ljavax/management/monitor/Monitor$MonitorTask;)V
astore 3
start local 3 8: aload 2
ifnonnull 10
9: new java.lang.SecurityException
dup
ldc "AccessControlContext cannot be null"
invokespecial java.lang.SecurityException.<init>:(Ljava/lang/String;)V
athrow
10: StackMap locals: java.security.PrivilegedAction
StackMap stack:
aload 3
aload 2
invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;
pop
11: aload 0
getfield javax.management.monitor.Monitor$MonitorTask.this$0:Ljavax/management/monitor/Monitor;
dup
astore 4
monitorenter
12: aload 0
getfield javax.management.monitor.Monitor$MonitorTask.this$0:Ljavax/management/monitor/Monitor;
invokevirtual javax.management.monitor.Monitor.isActive:()Z
ifeq 21
13: aload 0
getfield javax.management.monitor.Monitor$MonitorTask.this$0:Ljavax/management/monitor/Monitor;
getfield javax.management.monitor.Monitor.schedulerFuture:Ljava/util/concurrent/ScheduledFuture;
aload 1
if_acmpne 21
14: aload 0
getfield javax.management.monitor.Monitor$MonitorTask.this$0:Ljavax/management/monitor/Monitor;
aconst_null
putfield javax.management.monitor.Monitor.monitorFuture:Ljava/util/concurrent/Future;
15: aload 0
getfield javax.management.monitor.Monitor$MonitorTask.this$0:Ljavax/management/monitor/Monitor;
16: getstatic javax.management.monitor.Monitor.scheduler:Ljava/util/concurrent/ScheduledExecutorService;
aload 0
getfield javax.management.monitor.Monitor$MonitorTask.this$0:Ljavax/management/monitor/Monitor;
getfield javax.management.monitor.Monitor.schedulerTask:Ljavax/management/monitor/Monitor$SchedulerTask;
17: aload 0
getfield javax.management.monitor.Monitor$MonitorTask.this$0:Ljavax/management/monitor/Monitor;
invokevirtual javax.management.monitor.Monitor.getGranularityPeriod:()J
18: getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
19: invokeinterface java.util.concurrent.ScheduledExecutorService.schedule:(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
20: putfield javax.management.monitor.Monitor.schedulerFuture:Ljava/util/concurrent/ScheduledFuture;
21: StackMap locals: javax.management.monitor.Monitor
StackMap stack:
aload 4
monitorexit
22: goto 25
StackMap locals:
StackMap stack: java.lang.Throwable
23: aload 4
monitorexit
24: athrow
25: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 26 0 this Ljavax/management/monitor/Monitor$MonitorTask;
2 5 1 sf Ljava/util/concurrent/ScheduledFuture<*>;
7 26 1 sf Ljava/util/concurrent/ScheduledFuture<*>;
3 5 2 ac Ljava/security/AccessControlContext;
7 26 2 ac Ljava/security/AccessControlContext;
8 26 3 action Ljava/security/PrivilegedAction<Ljava/lang/Void;>;
Exception table:
from to target type
1 4 5 any
5 6 5 any
12 22 23 any
23 24 23 any
static javax.management.monitor.Monitor access$0(javax.management.monitor.Monitor$MonitorTask);
descriptor: (Ljavax/management/monitor/Monitor$MonitorTask;)Ljavax/management/monitor/Monitor;
flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
Code:
stack=1, locals=1, args_size=1
0: aload 0
getfield javax.management.monitor.Monitor$MonitorTask.this$0:Ljavax/management/monitor/Monitor;
areturn
LocalVariableTable:
Start End Slot Name Signature
}
SourceFile: "Monitor.java"
NestHost: javax.management.monitor.Monitor
InnerClasses:
private DaemonThreadFactory = javax.management.monitor.Monitor$DaemonThreadFactory of javax.management.monitor.Monitor
private MonitorTask = javax.management.monitor.Monitor$MonitorTask of javax.management.monitor.Monitor
javax.management.monitor.Monitor$MonitorTask$1