实验十一: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

猜你喜欢

转载自frankytony.iteye.com/blog/2268842