mik*_*iku 83
java.lang.Thread.activeCount()
Run Code Online (Sandbox Code Playgroud)
它将返回当前线程的线程组中活动线程的数量.
docs:http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#activeCount()
Mar*_*ell 25
Thread
Class 上有一个静态方法,它将返回JVM控制的活动线程数:
Thread.activeCount()
返回当前线程的线程组中活动线程的数量.
此外,如果您希望实时监视它们,外部调试器应列出所有活动线程(并允许您暂停任意数量的线程).
我编写了一个程序来迭代所有Threads
创建和打印getState()
的程序Thread
import java.util.Set;
public class ThreadStatus {
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()){
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
java ThreadStatus
Thread :Thread[MyThread:0,5,main]:state:TIMED_WAITING
Thread :Thread[main,5,main]:state:RUNNABLE
Thread :Thread[MyThread:1,5,main]:state:TIMED_WAITING
Thread :Thread[MyThread:4,5,main]:state:TIMED_WAITING
Thread :Thread[MyThread:2,5,main]:state:TIMED_WAITING
Thread :Thread[MyThread:3,5,main]:state:TIMED_WAITING
Thread count started by Main thread:6
Run Code Online (Sandbox Code Playgroud)
如果您删除以下条件
if ( t.getThreadGroup() == Thread.currentThread().getThreadGroup())
Run Code Online (Sandbox Code Playgroud)
您将在输出中得到以下线程,这些线程已由系统启动.
Reference Handler, Signal Dispatcher,Attach Listener and Finalizer
.
使用Linux Top
命令
top -H -p (process id)
您可以通过以下方法获取一个程序的进程ID:
ps aux | grep (your program name)
例如 :
ps aux | grep user.py