在Java中,假设我用如下所示的循环启动了1000个线程,有没有办法使用任务管理器监控实际运行的线程数量和线程消耗的CPU资源?
for(int j=0; j<=1000; j++)
{
MyThread mt = new MyThread ();
mt.start ();
}发布于 2012-08-21 19:24:42
您可以使用VisualVM或JConsole或任何其他监视工具
发布于 2012-08-21 19:28:45
如果您指的是Windows任务管理器,则可以自定义进程选项卡中显示的列:
Menu View > Select Columns > Threads编辑
快速测试表明,创建一个额外的线程确实会将该计数器递增1-当该线程终止时,该计数器会递减。
但是它从多个线程开始,因为它可能还包括各种JVM线程(它从19个线程开始)。请注意,jconsole在单线程程序中也显示了10个线程。
如果您使用visual VM,您可以看到守护进程和非守护进程线程之间的拆分(所有JVM线程都是守护进程)。
测试代码:
public static void main(String[] args) throws InterruptedException {
Thread.sleep(3000);
Runnable r = new Runnable() {
@Override
public void run() {
try {
Thread.sleep(10000);
} catch (InterruptedException ex) {}
}
};
for (int i = 0; i < 5; i++) {
new Thread(r).start();
Thread.sleep(1000);
}
Thread.sleep(10000);
}发布于 2012-08-21 19:25:45
在代码中,您可以使用Thread.activeCount()方法
https://stackoverflow.com/questions/12053738
复制相似问题