一个HelloWorld 的程序行这个应用,Java 至少会创建几个线程呢?

一个HelloWorld 的程序,运行这个应用,Java 至少会创建几个线程呢?

package com.wuyu.java;

import java.util.Map;

/**
 * Created by wuyupku 2019.4.13
 */
public class MemoryMonitor{
    public static void main(String[] args)
    {
    	  Thread t = Thread.currentThread();
          System.out.println("\n线程:"+t.getName()+"\n");
    	System.out.println("hello world!");

        for (Map.Entry<Thread,StackTraceElement[]> entry : Thread.getAllStackTraces().entrySet())
        {
            Thread thread = entry.getKey();

            StackTraceElement[] stackTraceElements = entry.getValue();

            if (thread.equals(Thread.currentThread()))
            {
                continue;
            }

            System.out.println("\n线程: " + thread.getName() + "\n");
            for (StackTraceElement element : stackTraceElements)
            {
                System.out.println("\t" + element + "\n");
            }
        }
    }
}


线程:main

hello world!

线程: Attach Listener


线程: Reference Handler

	java.lang.Object.wait(Native Method)

	java.lang.Object.wait(Unknown Source)

	java.lang.ref.Reference.tryHandlePending(Unknown Source)

	java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)


线程: Signal Dispatcher


线程: Finalizer

	java.lang.Object.wait(Native Method)

	java.lang.ref.ReferenceQueue.remove(Unknown Source)

	java.lang.ref.ReferenceQueue.remove(Unknown Source)

	java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)

在jdk8时,可见创建了5个线程。
main:主线程
Reference Handler:处理引用对象本身的垃圾回收
Finalizer:处理用户的Finalizer方法
Signal Dispatcher:外部jvm命令的转发器
Attach Listener: jvm提供一种jvm进程间通信的能力,能让一个进程传命令给另外一个进程

猜你喜欢

转载自blog.csdn.net/weixin_43258908/article/details/89281773