五条如下:
public static Logger logger=Logger.getLogger(Thread.currentThread().getStackTrace()[1].getClassName());
public static void main(String[] args) {
//获取Java中的线程工厂 获取Java虚拟中线程Bean
ThreadMXBean tmxb = ManagementFactory.getThreadMXBean();
//获取所有线程
ThreadInfo[] threadInfos=tmxb.dumpAllThreads(false, false);
//循环打印
for(ThreadInfo threadInfo:threadInfos) {
logger.log(Level.INFO,"threadName-->"+threadInfo.getThreadName());
}
}

Attach Listener:线程是负责接收到外部的命令,而对该命令进行执行的,并且把结果返回给发送者。通常我们会用一些命令去要求jvm给我们一些反馈信息,如:java -version、jmap、jstack等等。如果该线程在jvm启动的时候没有初始化,那么,则会在用户第一次执行jvm命令时,得到启动。
Signal Dispatcher: 前面我们提到第一个Attach Listener线程的职责是接收外部jvm命令,当命令接收成功后,会交给Signal Dispatcher线程去进行分发到各个不同的模块处理命令,并且返回处理结果。Signal Dispatcher线程也是在第一次接收外部 JVM 命令时,进行初始化工作。
Finalizer:Finalizer线程 用来执行所有对象的finalize() ;
Reference Handler:它主要用于处理引用对象本身(软引用、弱引用、虚引用)的垃圾回收问题。
main:自己启动的线程。
网友评论