如何检查Java中当前运行的线程数?

Jur*_*y A 12 java multithreading

我正在寻找一种方法来查看当前运行的线程数

  1. 首先通过Windows
  2. 编程

Den*_*ret 27

这将为您提供VM中的线程总数:

int nbThreads =  Thread.getAllStackTraces().keySet().size();
Run Code Online (Sandbox Code Playgroud)

现在,如果您希望当前正在执行的所有线程,您可以这样做:

int nbRunning = 0;
for (Thread t : Thread.getAllStackTraces().keySet()) {
    if (t.getState()==Thread.State.RUNNABLE) nbRunning++;
}
Run Code Online (Sandbox Code Playgroud)

这里列举了可能的状态:Thread.State javadoc

如果您希望看到运行的线程不是programmaticaly而是使用Windows工具,则可以使用Process Explorer.


Pet*_*rey 5

您可以获取在JVM中运行的所有线程及其堆栈跟踪使用Thread.getAllStackTraces()