¿Cómo puedo ver el número de subprocesos en un proceso de Java?Cómo obtener el número de subprocesos en un proceso de Java
Respuesta
herramienta útil para depurar programas Java, que da el número de hilos y otra información relevante sobre ellos:
jconsole <process-id>
Hay un método estático de la clase de Thread
que devolverá el número de hilos activos controlados por la JVM:
Thread.activeCount()
devuelve el número de hilos activos en grupo de hilos de la rosca actual.
Además, los depuradores externos deben enumerar todos los hilos activos (y le permiten suspender cualquier número de ellos) si desea supervisarlos en tiempo real.
java.lang.Thread.activeCount()
Se devolverá el número de hilos activos en grupo de hilos de la de hilo actual.
docs: http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#activeCount()
public class MainClass {
public static void main(String args[]) {
Thread t = Thread.currentThread();
t.setName("My Thread");
t.setPriority(1);
System.out.println("current thread: " + t);
int active = Thread.activeCount();
System.out.println("currently active threads: " + active);
Thread all[] = new Thread[active];
Thread.enumerate(all);
for (int i = 0; i < active; i++) {
System.out.println(i + ": " + all[i]);
}
}
}
ManagementFactory.getThreadMXBean().getThreadCount()
no se limita a grupos de subprocesos como Thread.activeCount()
hace.
He escrito un programa para recorrer toda Threads
creado e imprimir getState()
de cada 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();
}
}
}
Salida:
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
Si se quita la condición abajo
if (t.getThreadGroup() == Thread.currentThread().getThreadGroup())
Se hará obtener debajo de los hilos en la salida también, whi ch han sido iniciados por el sistema.
Reference Handler, Signal Dispatcher,Attach Listener and Finalizer
.
Solución genérica que no requiere una interfaz gráfica de usuario como jconsole (no funciona en terminales remotos), ps funciona para procesos que no son Java, no requiere una JVM instalada.
ps -o nlwp <pid>
El uso de comandos de Linux Top
top -H -p (process id)
usted podría conseguir identificador de proceso de un programa por este método:
ps aux | grep (your program name)
por ejemplo:
ps aux | grep user.py
- 1. Analizando el volcado de subprocesos de un proceso de Java
- 2. Obtener el número de subprocesos RTS en el programa Haskell?
- 3. ¿Cómo puedo controlar el conteo de subprocesos de un proceso en Linux?
- 4. Agregar recursivamente subprocesos a un grupo de subprocesos de Java
- 5. Cómo determinar el número de subprocesos de hardware
- 6. ¿Cómo aumentar el número de subprocesos en el grupo de subprocesos de tomcat?
- 7. Cambiar el nombre de subprocesos en Java
- 8. iis7 aumentar el número de subprocesos/solicitudes simultáneas por proceso de trabajo
- 9. Cómo programar el número de subprocesos en Delphi
- 10. Cómo limitar el número máximo de subprocesos paralelos en Perl
- 11. ¿Cómo puedo limitar el número de subprocesos activos en Python?
- 12. En tiempo de ejecución, ¿cómo puedo limitar el número de subprocesos java
- 13. ¿Cómo determinar el mejor número de subprocesos en Tomcat?
- 14. ¿Cómo puedo establecer el número de subprocesos en Quartz.NET threadpool?
- 15. ¿Cómo verificar el número de subprocesos actualmente en ejecución en Java?
- 16. Cómo obtener el PID de un proceso en una tubería
- 17. Afinidad de subprocesos de Java
- 18. ¿Parallel.ForEach limita el número de subprocesos activos?
- 19. Cómo limitar el número de subprocesos/subprocesos utilizados en una función en bash
- 20. Cómo obtener el método circundante en el archivo fuente Java para un número de línea dado
- 21. sobreasignación de subprocesos de subprocesos de Java
- 22. ¿Cómo obtener el PID de un proceso dando el nombre del proceso en Mac OS X?
- 23. ¿Pueden 2 subprocesos Java autenticarse como dos usuarios diferentes de Kerberos (en el mismo proceso)?
- 24. ¿Cómo puedo obtener una métrica sobre el número de colisiones en un Hashmap de Java?
- 25. Cómo obtener el primer día de un número de semana determinado en Java
- 26. ¿Cómo obtener el módulo de un número en XPath/XSLT?
- 27. ¿Cómo obtener el número total de iteraciones en un foreach
- 28. Java Grupo de subprocesos en caché y subprocesos local
- 29. ¿Cómo obtener el ID de proceso actual?
- 30. cómo cambiar el nombre de un proceso de aplicación Java?
Los otros métodos también son buenos, pero esto es más útil. – ndemir