seo网站管理,中国建设银行网站类型,自己做的网站如何上线,wordpress制作二级菜单概述 jstack可用于导出java运用程序的线程堆栈。其基本使用语法为#xff1a; jstack [-l] pid -l 选项用于打印锁的额外信息。使用演示样例 以下这段代码执行之后会出现死锁现象(由于线程1持有lock1。在等待lock2。线程2持有lock2在等待lock1#xff0c;造成了循环等待。形成… 概述 jstack可用于导出java运用程序的线程堆栈。其基本使用语法为 jstack [-l] pid -l 选项用于打印锁的额外信息。 使用演示样例 以下这段代码执行之后会出现死锁现象(由于线程1持有lock1。在等待lock2。线程2持有lock2在等待lock1造成了循环等待。形成死锁) package com.winwill.deadlock;/*** author qifuguang* date 15/6/4 16:45*/
public class TestDeadLock {private static final Object lock1 new Object();private static final Object lock2 new Object();public static void main(String[] args) {Thread t1 new Thread(new Runnable() {Overridepublic void run() {synchronized (lock1) {try {Thread.sleep(1000);} catch (Exception e) {e.printStackTrace();}synchronized (lock2) {System.out.println(线程1执行....);}}}});Thread t2 new Thread(new Runnable() {Overridepublic void run() {synchronized (lock2) {try {Thread.sleep(1000);} catch (Exception e) {e.printStackTrace();}synchronized (lock1) {System.out.println(线程2执行...);}}}});t1.start();t2.start();}
} 我们执行这段代码然后使用jstack命令导出这个程序的线程堆栈信息 [qifuguangMac~]$ jstack -l 21023 /tmp/deadlock.txt 打开导出的线程堆栈信息文件。文件末尾例如以下所看到的 如图所看到的。导出的线程堆栈文件里明白提示发现死锁。而且指明了死锁的原因。 总结 jstack不仅可以导出线程堆栈。还能自己主动进行死锁检測输出线程死锁原因。 转载于:https://www.cnblogs.com/zfyouxi/p/5201994.html