如题所说
我在一个java程序中,启动了N个线程,我在外部怎么知道获得进程数N?
好象是.net下有现成的类

解决方案 »

  1.   

    你所指的外部我不太明白,如果你是另外写一个程序Java读取一个已经正在运行的JVM线程数,应该是需要使用JNI之类方法才行
    如果你是指获取自己所在的JVM的运行线程情况可以
    Map<Thread, StackTraceElement[]> maps = Thread.getAllStackTraces();
    ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();
    ThreadInfo info = threadMXBean.getThreadInfo(t.getId());这样获得一些相关的信息
      

  2.   

    我的意思是说:一个java程序中,启动了N个线程,我想测试这几个线程是否启动,就是想得到这几个线程的数目,刚才说的外部其实就是一个测试程序了,谢谢你的啦
      

  3.   

    Map <Thread, StackTraceElement[] > maps = Thread.getAllStackTraces(); 
    ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean(); 
    ThreadInfo info = threadMXBean.getThreadInfo(t.getId()); 
    t.getId()中t是代表什么?
      

  4.   

    如果你已经持有这N线程的对象Thread[] threadList,你可以直接调用threadList[i].getState();
    或者你创建它们的时候指定一个ThreadGroup,这样调用ThreadGroup.activeCount就可以知道还在运行的个数了
    t当然就是maps中的key值啦Map  <Thread, StackTraceElement[]  > maps = Thread.getAllStackTraces();  
    ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();  
    for(Map.Entry<Thread, StackTraceElement[]> entry : maps.entrySet()) {
    Thread t = entry.getKey();
    ThreadInfo info = threadMXBean.getThreadInfo(t.getId());  
    }