Por, este es un seguimiento de pila de un servidor Tomcat:¿Qué significa "bloqueado" en un seguimiento de la pila de Java?
"RMI TCP Accept-0" daemon prio=10 tid=0x091a5800 nid=0x8f1 runnable [0x8b305000]
java.lang.Thread.State: RUNNABLE
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:408)
- locked <0x911d3c30> (a java.net.SocksSocketImpl)
at java.net.ServerSocket.implAccept(ServerSocket.java:462)
at java.net.ServerSocket.accept(ServerSocket.java:430)
at sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(LocalRMIServerSocketFactory.java:34)
at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:369)
at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:341)
at java.lang.Thread.run(Thread.java:662)
Mi conjetura es que "bloqueado" significa que la CPU está esperando en una especie de bloqueo. Sin embargo, si ese es el caso, ¿por qué el estado del hilo aparece como RUNNABLE en lugar de BLOQUEADO?
Gracias.
Gracias. Entonces esto no significa que el hilo esté inactivo o dormido, que es lo que había supuesto. Veo muchos hilos como este en mi servidor Tomcat. ¿Es eso una condición normal? –
@Frank LaRosa: Absolutamente. En cualquier momento dado, tenemos de 10 a 100 subprocesos en ese estado en nuestros servidores. El objetivo de este hilo es esperar hasta que otro servidor lo pida pidiendo información, y como normalmente usted quiere tener la capacidad de procesar más de una solicitud a la vez (búsquedas de texto completo, por ejemplo), tendrá múltiples conectores disponibles. –
Pero esos hilos no están girando en un bucle usando ciclos de CPU mientras esperan una conexión, ¿verdad? Suponiendo que no lo son, ¿qué está causando que no lo hagan? Normalmente, cuando creo un hilo de trabajo, pasa la mayor parte del tiempo en estado de ESPERA, hasta que otro hilo lo notifique. En este caso, todos los hilos están listados como RUNNABLE. –