一个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进程间通信的能力,能让一个进程传命令给另外一个进程

全部评论

相关推荐

程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
秋招吐槽大会
点赞 评论 收藏
分享
2025-12-16 17:17
门头沟学院 产品经理
烤点老白薯:他第二句话的潜台词是想让你帮他点个瑞幸或者喜茶啥的
mt对你说过最有启发的一...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务