回答
这会给你的虚拟机中的线程总数:
int nbThreads = Thread.getAllStackTraces().keySet().size();
现在,如果您想要所有线程当前执行克,你可以这样做:
int nbRunning = 0;
for (Thread t : Thread.getAllStackTraces().keySet()) {
if (t.getState()==Thread.State.RUNNABLE) nbRunning++;
}
可能的状态都列举在这里:Thread.State javadoc
如果你想看到正在运行的线程不programmaticaly,但与Windows的工具,你可以使用Process Explorer。
在Windows数:
有必然是一个performance counter为可以告诉你的过程。
编程:
返回当前线程的线程组及其子组在活动线程数的估计。递归地遍历当前线程的线程组中的所有子组。
或者更直接,ThreadGroup#activeCount
:
返回活动线程的该线程组及其子组的数量的估计值。
返回该线程组的双亲。首先,如果父项不为null,则父线程组的checkAccess方法将不带参数地调用;如果父项不为空,则不调用父线程组的checkAccess方法;否则,调用父线程组的checkAccess方法。这可能会导致安全异常。
所有这一切似乎表明沿着线的东西:
int activeThreadTotalEstimate() {
ThreadGroup group;
ThreadGroup parent;
group = Thread.currentThread().getThreadGroup();
while ((parent = group.getParent()) != null) {
group = parent;
}
return group.activeCount();
}
你可以在JVM中运行的所有线程和它们的堆栈跟踪采用Thread.getAllStackTraces()
在回答您以下注释
在下面的代码段:而(resultSet.next()){ 名称= resultSet.getString( “hName”); MyRunnable worker = new MyRunnable(hName); threadExecutor.execute(worker); }。我的线程 池的大小为10。我需要确保我的程序正常工作 多线程&想要检查有多少线程 在某个时刻运行。我怎样才能做到这一点?
到另一个答案,我建议你用JVisualVM分析你的代码,并检查你的线程池是否正常工作。这个建议背后的原因是,那么你不必担心JVM管理的所有其他管家线程。除了你想要做的是为什么像JVisualVM这样的工具。
如果您不熟悉分析Java程序,JVisualVM可让您在运行代码时看到底下发生了什么。您可以看到Heap,GC活动,检查运行/等待任何样本/配置文件您的cpu或内存使用情况的线程。还有很多插件。
代码片段:
import java.util.Set;
import java.lang.Thread.State;
public class ActiveThreads {
public static void main(String args[]) throws Exception{
for (int i=0; i< 5; i++){
Thread t = new Thread(new MyThread());
t.setName("MyThread:"+i);
t.start();
}
int threadCount = 0;
Set<Thread> threadSet = Thread.getAllStackTraces().keySet();
for (Thread t : threadSet){
if (t.getThreadGroup() == Thread.currentThread().getThreadGroup() &&
t.getState() == Thread.State.RUNNABLE){
System.out.println("Thread :"+t+":"+"state:"+t.getState());
++threadCount;
}
}
System.out.println("Thread count started by Main thread:"+threadCount);
}
}
class MyThread implements Runnable{
public void run(){
try{
Thread.sleep(2000);
}catch(Exception err){
err.printStackTrace();
}
}
}
输出:
Thread :Thread[main,5,main]:state:RUNNABLE
Thread count started by Main thread:1
说明:
Thread.getAllStackTraces().keySet()
为您提供所有线程,并已开始双方Program and System
的名单。在没有ThreadeGroup
条件的情况下,如果它们处于活动状态,您将获得系统线程数。
Reference Handler, Signal Dispatcher,Attach Listener and Finalizer
- 1. 如何检查Python中当前正在运行的线程的数量?
- 2. 如何检查我的线程是否正在运行Java
- 3. 如何在boost中找到当前正在运行的线程?
- 4. 检查正在运行的进程 - java
- 5. 如何检查上下文当前正在运行的活动
- 6. 如何检查Android中当前正在运行的应用程序?
- 7. 检查当前的WPF应用程序是否正在运行?
- 8. 如何停止当前线程以外的所有正在运行的线程?
- 9. 检查正在运行的程序中可用RAM的数量
- 10. 如何检查正在运行的java程序的进度
- 11. 如何控制ThreadPoolTaskExecutor中正在运行的线程数量?
- 12. 如何检查SpeechRecognizer当前是否正在运行?
- 13. 如何检查RestKit当前是否正在运行
- 14. 查看当前正在运行的程序的参数值?
- 15. 如何在Node.js中查找当前正在运行的代码
- 16. 如何在运行前检查vsprintf的参数是否正确
- 17. 如何检查当前在我的mysql数据库中运行的查询?
- 18. Python检查当前进程是否正在运行?
- 19. 如何从Java中的线程类中计算正在运行的线程?
- 20. 在java中查杀正在运行的线程?
- 21. 在运行时,如何限制java线程的数量
- 22. 如何在java中的批处理文件中获取所有当前正在运行的线程?
- 23. 如何检查线程是否正在运行?
- 24. 如何检查线程是否正在运行
- 25. 如何检查AWS EC2实例当前正常运行时间
- 26. 如何在android中查找当前正在运行的应用程序> LOLLIPOP?
- 27. 如何检测显示动画[jQuery的]当前正在运行
- 28. Java线程:正在运行的JVM
- 29. 从ExecutorService获取当前正在运行的线程对象
- 30. 如何检测java中最后一个正在运行的线程
你的意思是编程? – Keppil 2012-07-18 08:13:11
我是新来处理多线程。我有一个Java程序,它使用大小为10的线程池。程序运行时,如何检查程序当前运行的线程数量?我需要一种方法来通过Windows来执行此操作,并通过程序本身打印出当前正在运行的线程数。 – 2012-07-18 08:19:36