最近我一直在学习更多有关线程的知识,我想知道资源监视器为什么总是显示19个线程为Java进程运行。
现在我的问题是:
如果是这样的话:
如果不是:
我创建了一个小的.jar(参见底部的源码),它将运行并创建一个由5个工作线程组成的固定线程池。在那个池中我发送了任务,我注意到在处理完所有任务后,java使用的线程数量会回到19。
固定线程池中的线程是空闲还是已被删除,因此每当提交新任务时都会创建新线程?
对于一篇文章中的多个问题感到抱歉。
答案 0 :(得分:2)
这取决于JVM版本,JVM供应商以及垃圾收集器所在的一些设置(以及GC的调整方式)。还有一些像代理或JMX这样的附加组件可以改变系统运行的线程。当然所有线程都是由实际的Java程序启动的。您可以使用jstack
程序实际列出它们(大多数系统线程都有明显的名称)。它们包括用于最终化的线程,GC,主线程,Gui线程(如果使用),JIT编译器线程和参考弱点。