JVM中运行的默认线程数是多少?

时间:2014-08-23 17:51:42

标签: java multithreading

最近我一直在学习更多有关线程的知识,我想知道资源监视器为什么总是显示19个线程为Java进程运行。

现在我的问题是:

  • 这是使用19个线程的VM吗?

如果是这样的话:

  • 您是否可以访问这些主题?
  • 是否可以将这些线程用于线程池?
  • 是否可以减少线程数量?

如果不是:

  • 导致出现19个主题的原因是什么?

我创建了一个小的.jar(参见底部的源码),它将运行并创建一个由5个工作线程组成的固定线程池。在那个池中我发送了任务,我注意到在处理完所有任务后,java使用的线程数量会回到19。

固定线程池中的线程是空闲还是已被删除,因此每当提交新任务时都会创建新线程?

对于一篇文章中的多个问题感到抱歉。

1 个答案:

答案 0 :(得分:2)

这取决于JVM版本,JVM供应商以及垃圾收集器所在的一些设置(以及GC的调整方式)。还有一些像代理或JMX这样的附加组件可以改变系统运行的线程。当然所有线程都是由实际的Java程序启动的。您可以使用jstack程序实际列出它们(大多数系统线程都有明显的名称)。它们包括用于最终化的线程,GC,主线程,Gui线程(如果使用),JIT编译器线程和参考弱点。