实验十一:jstack使用
public class ThreadState {
public static void main(String[] args) {
new Thread(new TimeWaiting(),"timeWaitingThread").start();
new Thread(new Waiting(),"WaitingThread").start();
new Thread(new Blocked(),"BlockedThread-1").start();
new Thread(new Blocked(),"BlockedThread-2").start();
}
}
class TimeWaiting implements Runnable{
@Override
public void run() {
while(true){
try {
Thread.sleep(100000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
class Waiting implements Runnable{
@Override
public void run() {
while(true){
synchronized(Waiting.class){
try {
Waiting.class.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
class Blocked implements Runnable{
@Override
public void run() {
while(true){
synchronized(Blocked.class){
while(true){
try {
Thread.sleep(100000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
}
cd C:\Program Files\Java\jdk1.7.0_51\bin
jps
jstack
ehanmqi@CN00202245 /C/Program Files/Java/jdk1.7.0_51/bin
$ jps
6904
4880 Jps
7928 ThreadState
ehanmqi@CN00202245 /C/Program Files/Java/jdk1.7.0_51/bin
$ jstack 7928
2016-01-06 09:13:27
Full thread dump Java HotSpot(TM) 64-Bit Server VM (24.51-b03 mixed mode):
"DestroyJavaVM" prio=6 tid=0x000000000278e000 nid=0x1cb8 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"BlockedThread-2" prio=6 tid=0x000000000c9af000 nid=0xf50 waiting for monitor entry [0x000000000ce9f000]
java.lang.Thread.State: BLOCKED (on object monitor)
at Blocked.run(ThreadState.java:61)
- waiting to lock <0x00000007d5d9fd18> (a java.lang.Class for Blocked)
at java.lang.Thread.run(Thread.java:744)
"BlockedThread-1" prio=6 tid=0x000000000c9aa800 nid=0x1cc8 waiting on condition [0x000000000d4ee000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at Blocked.run(ThreadState.java:61)
- locked <0x00000007d5d9fd18> (a java.lang.Class for Blocked)
at java.lang.Thread.run(Thread.java:744)
"WaitingThread" prio=6 tid=0x000000000c9a9800 nid=0xf18 in Object.wait() [0x000000000d24f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000007d5d9ec10> (a java.lang.Class for Waiting)
at java.lang.Object.wait(Object.java:503)
at Waiting.run(ThreadState.java:41)
- locked <0x00000007d5d9ec10> (a java.lang.Class for Waiting)
at java.lang.Thread.run(Thread.java:744)
"timeWaitingThread" prio=6 tid=0x000000000c9a9000 nid=0x1f88 waiting on condition [0x000000000d3be000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at TimeWaiting.run(ThreadState.java:23)
at java.lang.Thread.run(Thread.java:744)
"Service Thread" daemon prio=6 tid=0x000000000af9a800 nid=0x1f90 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"C2 CompilerThread1" daemon prio=10 tid=0x000000000af99800 nid=0x540 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"C2 CompilerThread0" daemon prio=10 tid=0x000000000af95000 nid=0x424 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"Attach Listener" daemon prio=10 tid=0x000000000af3f800 nid=0x1f74 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"Signal Dispatcher" daemon prio=10 tid=0x000000000af92800 nid=0x14d0 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"Finalizer" daemon prio=8 tid=0x000000000af29800 nid=0x1818 in Object.wait() [0x000000000c2ef000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000007d5d05568> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
- locked <0x00000007d5d05568> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:189)
"Reference Handler" daemon prio=10 tid=0x000000000af1e800 nid=0x2b4 in Object.wait() [0x000000000c19f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000007d5d050f0> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:503)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133)
- locked <0x00000007d5d050f0> (a java.lang.ref.Reference$Lock)
"VM Thread" prio=10 tid=0x000000000af1b000 nid=0x1b18 runnable
"GC task thread#0 (ParallelGC)" prio=6 tid=0x00000000027dc800 nid=0x948 runnable
"GC task thread#1 (ParallelGC)" prio=6 tid=0x00000000027de000 nid=0x1e5c runnable
"GC task thread#2 (ParallelGC)" prio=6 tid=0x00000000027e0000 nid=0x1a78 runnable
"GC task thread#3 (ParallelGC)" prio=6 tid=0x00000000027e1800 nid=0x1b2c runnable
"VM Periodic Task Thread" prio=10 tid=0x000000000af9b000 nid=0x1cc0 waiting on condition
JNI global references: 105
阅读更多- 【iCore3 双核心板_FPGA】例程十一:乘法器实验——乘法器使用
- C++上机实验二:派生类的设计与使用
- 单片机实验期末考试-使用两个外部中断控制8只LED显示的电路
- makefile详解 (十一) 使用make更新函数库文件
- springboot(十一):Spring boot中mongodb的使用
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
- 怎的使用jstack诊断Java应用程序故障
- 双链表的基本使用及其应用(实验2.2)
- 使用jstack分析cpu消耗过高的问题
- oracle实验31:使用PL/SQL,书写一个最简单的块
- Javascript里使用Dom操作Xml-asp.net入门笔记(十一)http://dev.csdn.net/article/78/78093.shtm
- 2088-数据结构实验之栈与队列十一:refresh的停车场
- selenium+testng+gitblit+jenkins+ant自动化测试系列十一:使用Email Extersion Plugin替换Jenkins的默认邮件通知
- 使用虚拟磁盘搭建windows 2012实验环境
- javaweb学习总结(十一)——使用Cookie进行会话管理
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解
- experiment @ lzptc , 2nd_term_java实验4 Swing组件的使用
- 关于mysql的存储过程的使用权限的实验及思考
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解