public class org.eclipse.jetty.util.thread.ShutdownThread extends java.lang.Thread
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.eclipse.jetty.util.thread.ShutdownThread
super_class: java.lang.Thread
{
private static final org.eclipse.jetty.util.log.Logger LOG;
descriptor: Lorg/eclipse/jetty/util/log/Logger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final org.eclipse.jetty.util.thread.ShutdownThread _thread;
descriptor: Lorg/eclipse/jetty/util/thread/ShutdownThread;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private boolean _hooked;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private final java.util.List<org.eclipse.jetty.util.component.LifeCycle> _lifeCycles;
descriptor: Ljava/util/List;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/List<Lorg/eclipse/jetty/util/component/LifeCycle;>;
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: ldc Lorg/eclipse/jetty/util/thread/ShutdownThread;
invokestatic org.eclipse.jetty.util.log.Log.getLogger:(Ljava/lang/Class;)Lorg/eclipse/jetty/util/log/Logger;
putstatic org.eclipse.jetty.util.thread.ShutdownThread.LOG:Lorg/eclipse/jetty/util/log/Logger;
1: new org.eclipse.jetty.util.thread.ShutdownThread
dup
invokespecial org.eclipse.jetty.util.thread.ShutdownThread.<init>:()V
putstatic org.eclipse.jetty.util.thread.ShutdownThread._thread:Lorg/eclipse/jetty/util/thread/ShutdownThread;
return
LocalVariableTable:
Start End Slot Name Signature
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Thread.<init>:()V
1: aload 0
new java.util.concurrent.CopyOnWriteArrayList
dup
invokespecial java.util.concurrent.CopyOnWriteArrayList.<init>:()V
putfield org.eclipse.jetty.util.thread.ShutdownThread._lifeCycles:Ljava/util/List;
2: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/eclipse/jetty/util/thread/ShutdownThread;
private synchronized void hook();
descriptor: ()V
flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield org.eclipse.jetty.util.thread.ShutdownThread._hooked:Z
ifne 2
1: invokestatic java.lang.Runtime.getRuntime:()Ljava/lang/Runtime;
aload 0
invokevirtual java.lang.Runtime.addShutdownHook:(Ljava/lang/Thread;)V
2: StackMap locals:
StackMap stack:
aload 0
iconst_1
putfield org.eclipse.jetty.util.thread.ShutdownThread._hooked:Z
3: goto 7
4: StackMap locals:
StackMap stack: java.lang.Exception
astore 1
start local 1 5: getstatic org.eclipse.jetty.util.thread.ShutdownThread.LOG:Lorg/eclipse/jetty/util/log/Logger;
aload 1
invokeinterface org.eclipse.jetty.util.log.Logger.ignore:(Ljava/lang/Throwable;)V
6: getstatic org.eclipse.jetty.util.thread.ShutdownThread.LOG:Lorg/eclipse/jetty/util/log/Logger;
ldc "shutdown already commenced"
iconst_0
anewarray java.lang.Object
invokeinterface org.eclipse.jetty.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
end local 1 7: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/eclipse/jetty/util/thread/ShutdownThread;
5 7 1 e Ljava/lang/Exception;
Exception table:
from to target type
0 3 4 Class java.lang.Exception
private synchronized void unhook();
descriptor: ()V
flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
iconst_0
putfield org.eclipse.jetty.util.thread.ShutdownThread._hooked:Z
1: invokestatic java.lang.Runtime.getRuntime:()Ljava/lang/Runtime;
aload 0
invokevirtual java.lang.Runtime.removeShutdownHook:(Ljava/lang/Thread;)Z
pop
2: goto 6
3: StackMap locals:
StackMap stack: java.lang.Exception
astore 1
start local 1 4: getstatic org.eclipse.jetty.util.thread.ShutdownThread.LOG:Lorg/eclipse/jetty/util/log/Logger;
aload 1
invokeinterface org.eclipse.jetty.util.log.Logger.ignore:(Ljava/lang/Throwable;)V
5: getstatic org.eclipse.jetty.util.thread.ShutdownThread.LOG:Lorg/eclipse/jetty/util/log/Logger;
ldc "shutdown already commenced"
iconst_0
anewarray java.lang.Object
invokeinterface org.eclipse.jetty.util.log.Logger.debug:(Ljava/lang/String;[Ljava/lang/Object;)V
end local 1 6: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/eclipse/jetty/util/thread/ShutdownThread;
4 6 1 e Ljava/lang/Exception;
Exception table:
from to target type
0 2 3 Class java.lang.Exception
public static org.eclipse.jetty.util.thread.ShutdownThread getInstance();
descriptor: ()Lorg/eclipse/jetty/util/thread/ShutdownThread;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: getstatic org.eclipse.jetty.util.thread.ShutdownThread._thread:Lorg/eclipse/jetty/util/thread/ShutdownThread;
areturn
LocalVariableTable:
Start End Slot Name Signature
public static synchronized void register(org.eclipse.jetty.util.component.LifeCycle[]);
descriptor: ([Lorg/eclipse/jetty/util/component/LifeCycle;)V
flags: (0x00a9) ACC_PUBLIC, ACC_STATIC, ACC_SYNCHRONIZED, ACC_VARARGS
Code:
stack=2, locals=1, args_size=1
start local 0 0: getstatic org.eclipse.jetty.util.thread.ShutdownThread._thread:Lorg/eclipse/jetty/util/thread/ShutdownThread;
getfield org.eclipse.jetty.util.thread.ShutdownThread._lifeCycles:Ljava/util/List;
aload 0
invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
pop
1: getstatic org.eclipse.jetty.util.thread.ShutdownThread._thread:Lorg/eclipse/jetty/util/thread/ShutdownThread;
getfield org.eclipse.jetty.util.thread.ShutdownThread._lifeCycles:Ljava/util/List;
invokeinterface java.util.List.size:()I
ifle 3
2: getstatic org.eclipse.jetty.util.thread.ShutdownThread._thread:Lorg/eclipse/jetty/util/thread/ShutdownThread;
invokevirtual org.eclipse.jetty.util.thread.ShutdownThread.hook:()V
3: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 lifeCycles [Lorg/eclipse/jetty/util/component/LifeCycle;
MethodParameters:
Name Flags
lifeCycles
public static synchronized void register(int, org.eclipse.jetty.util.component.LifeCycle[]);
descriptor: (I[Lorg/eclipse/jetty/util/component/LifeCycle;)V
flags: (0x00a9) ACC_PUBLIC, ACC_STATIC, ACC_SYNCHRONIZED, ACC_VARARGS
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: getstatic org.eclipse.jetty.util.thread.ShutdownThread._thread:Lorg/eclipse/jetty/util/thread/ShutdownThread;
getfield org.eclipse.jetty.util.thread.ShutdownThread._lifeCycles:Ljava/util/List;
iload 0
aload 1
invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
invokeinterface java.util.List.addAll:(ILjava/util/Collection;)Z
pop
1: getstatic org.eclipse.jetty.util.thread.ShutdownThread._thread:Lorg/eclipse/jetty/util/thread/ShutdownThread;
getfield org.eclipse.jetty.util.thread.ShutdownThread._lifeCycles:Ljava/util/List;
invokeinterface java.util.List.size:()I
ifle 3
2: getstatic org.eclipse.jetty.util.thread.ShutdownThread._thread:Lorg/eclipse/jetty/util/thread/ShutdownThread;
invokevirtual org.eclipse.jetty.util.thread.ShutdownThread.hook:()V
3: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 index I
0 4 1 lifeCycles [Lorg/eclipse/jetty/util/component/LifeCycle;
MethodParameters:
Name Flags
index
lifeCycles
public static synchronized void deregister(org.eclipse.jetty.util.component.LifeCycle);
descriptor: (Lorg/eclipse/jetty/util/component/LifeCycle;)V
flags: (0x0029) ACC_PUBLIC, ACC_STATIC, ACC_SYNCHRONIZED
Code:
stack=2, locals=1, args_size=1
start local 0 0: getstatic org.eclipse.jetty.util.thread.ShutdownThread._thread:Lorg/eclipse/jetty/util/thread/ShutdownThread;
getfield org.eclipse.jetty.util.thread.ShutdownThread._lifeCycles:Ljava/util/List;
aload 0
invokeinterface java.util.List.remove:(Ljava/lang/Object;)Z
pop
1: getstatic org.eclipse.jetty.util.thread.ShutdownThread._thread:Lorg/eclipse/jetty/util/thread/ShutdownThread;
getfield org.eclipse.jetty.util.thread.ShutdownThread._lifeCycles:Ljava/util/List;
invokeinterface java.util.List.size:()I
ifne 3
2: getstatic org.eclipse.jetty.util.thread.ShutdownThread._thread:Lorg/eclipse/jetty/util/thread/ShutdownThread;
invokevirtual org.eclipse.jetty.util.thread.ShutdownThread.unhook:()V
3: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 lifeCycle Lorg/eclipse/jetty/util/component/LifeCycle;
MethodParameters:
Name Flags
lifeCycle
public static synchronized boolean isRegistered(org.eclipse.jetty.util.component.LifeCycle);
descriptor: (Lorg/eclipse/jetty/util/component/LifeCycle;)Z
flags: (0x0029) ACC_PUBLIC, ACC_STATIC, ACC_SYNCHRONIZED
Code:
stack=2, locals=1, args_size=1
start local 0 0: getstatic org.eclipse.jetty.util.thread.ShutdownThread._thread:Lorg/eclipse/jetty/util/thread/ShutdownThread;
getfield org.eclipse.jetty.util.thread.ShutdownThread._lifeCycles:Ljava/util/List;
aload 0
invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 lifeCycle Lorg/eclipse/jetty/util/component/LifeCycle;
MethodParameters:
Name Flags
lifeCycle
public void run();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=4, args_size=1
start local 0 0: getstatic org.eclipse.jetty.util.thread.ShutdownThread._thread:Lorg/eclipse/jetty/util/thread/ShutdownThread;
getfield org.eclipse.jetty.util.thread.ShutdownThread._lifeCycles:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 2
goto 11
StackMap locals: org.eclipse.jetty.util.thread.ShutdownThread top java.util.Iterator
StackMap stack:
1: aload 2
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.eclipse.jetty.util.component.LifeCycle
astore 1
start local 1 2: aload 1
invokeinterface org.eclipse.jetty.util.component.LifeCycle.isStarted:()Z
ifeq 5
3: aload 1
invokeinterface org.eclipse.jetty.util.component.LifeCycle.stop:()V
4: getstatic org.eclipse.jetty.util.thread.ShutdownThread.LOG:Lorg/eclipse/jetty/util/log/Logger;
ldc "Stopped {}"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 1
aastore
invokeinterface org.eclipse.jetty.util.log.Logger.debug:(Ljava/lang/String;[Ljava/lang/Object;)V
5: StackMap locals: org.eclipse.jetty.util.thread.ShutdownThread org.eclipse.jetty.util.component.LifeCycle java.util.Iterator
StackMap stack:
aload 1
instanceof org.eclipse.jetty.util.component.Destroyable
ifeq 11
6: aload 1
checkcast org.eclipse.jetty.util.component.Destroyable
invokeinterface org.eclipse.jetty.util.component.Destroyable.destroy:()V
7: getstatic org.eclipse.jetty.util.thread.ShutdownThread.LOG:Lorg/eclipse/jetty/util/log/Logger;
ldc "Destroyed {}"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 1
aastore
invokeinterface org.eclipse.jetty.util.log.Logger.debug:(Ljava/lang/String;[Ljava/lang/Object;)V
8: goto 11
9: StackMap locals:
StackMap stack: java.lang.Exception
astore 3
start local 3 10: getstatic org.eclipse.jetty.util.thread.ShutdownThread.LOG:Lorg/eclipse/jetty/util/log/Logger;
aload 3
invokeinterface org.eclipse.jetty.util.log.Logger.debug:(Ljava/lang/Throwable;)V
end local 3 end local 1 11: StackMap locals: org.eclipse.jetty.util.thread.ShutdownThread top java.util.Iterator
StackMap stack:
aload 2
invokeinterface java.util.Iterator.hasNext:()Z
ifne 1
12: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lorg/eclipse/jetty/util/thread/ShutdownThread;
2 11 1 lifeCycle Lorg/eclipse/jetty/util/component/LifeCycle;
10 11 3 ex Ljava/lang/Exception;
Exception table:
from to target type
2 8 9 Class java.lang.Exception
}
SourceFile: "ShutdownThread.java"