你知道吗?Java程序启动时至少启动几个线程?

日常学习笔记 专栏收录该内容
12 篇文章 0 订阅

好久没有写一些东西了。今天看见一个不错的话题:Java程序启动时至少会启动多少个线程?

刚看到这个话题时,我脑子里首先想到是两个,一个是main线程,一个GC回收的线程。我估计大部分人首先想到的也是两个。

其实这么想是没错的,因为它问的是至少有几个,不是到底有几个?

但是想要知道到底有几个,得调用JMX的API:

public class TestOne {
	public static void main(String[] args) {
		ThreadMXBean mxBean = ManagementFactory.getThreadMXBean();
		ThreadInfo[] allThreads = mxBean.dumpAllThreads(false, false);
		for (ThreadInfo threadInfo : allThreads) {
			System.out.println(threadInfo.getThreadId()+"==="+threadInfo.getThreadName());
			
		}
	}

}

输出的结果为:

5===Attach Listener 
4===Signal Dispatcher 分发处理发送给jvm信号的线程
3===Finalizer 调用对象finalize方法的线程,就是垃圾回收的线程
2===Reference Handler 清除reference的线程
1===main

通过这段代码发现Java程序启动时至少会有以上几个线程会启动,但因为我是在JDK1.8的环境下测试的,不同版本的JDK测试结果可能不一样!

  • 5
    点赞
  • 1
    评论
  • 6
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值