在Java中,线程可以有不同的状态:
NEW,RUNNABLE,BLOCKED,WAITING,TIMED_WAITING,TERMINATED
但是,当线程被IO阻塞时,其状态为“RUNNABLE”。如何判断它是否被IO阻止?
答案 0 :(得分:10)
另见http://architects.dzone.com/articles/how-analyze-java-thread-dumps
线程转储
转储java线程堆栈,你可以找到类似的东西
java.lang.Thread.State: RUNNABLE
at java.io.FileInputStream.readBytes(Native Method)
或
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
你可以理解java正在等待响应。
我建议使用此工具Java Thread Dump Analyser或此插件TDA
<强> ThreadMXBean的强>
Yiu可以使用ThreadMXBean获取更多信息
http://docs.oracle.com/javase/7/docs/api/java/lang/management/ThreadMXBean.html