jconsole进行java死锁检测
生活随笔
收集整理的這篇文章主要介紹了
jconsole进行java死锁检测
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
檢測(cè)步驟
- 1、在自己的jdk文件夾下進(jìn)入bin目錄,找到 jconsole.exe 雙擊執(zhí)行
- 2、進(jìn)入登錄連接頁,找到想要進(jìn)行監(jiān)視的進(jìn)程
- 3、連接后找到線程欄,點(diǎn)擊死鎖檢測(cè)
1、在自己的jdk文件夾下進(jìn)入bin目錄,找到 jconsole.exe 雙擊執(zhí)行
2、進(jìn)入登錄連接頁,找到想要進(jìn)行監(jiān)視的進(jìn)程
比如我這里在idea里自己寫了個(gè)死鎖,運(yùn)行后的 PID 為8627,我就選擇對(duì)應(yīng)的進(jìn)程進(jìn)行監(jiān)控。
public class DeadLock {public static void main(String[] args) throws InterruptedException {Object lockA=new Object(); //定義資源:鎖AObject lockB=new Object(); //定義資源:鎖BThread thread1=new Thread(()->{synchronized (lockA){System.out.println("線程1獲取到了鎖A");try {TimeUnit.SECONDS.sleep(3);} catch (InterruptedException e) {e.printStackTrace();}synchronized (lockB){System.out.println("線程1獲取到了鎖B");}}});thread1.start();Thread thread2=new Thread(()->{synchronized (lockB){System.out.println("線程2獲取到了鎖B");try {TimeUnit.SECONDS.sleep(3);} catch (InterruptedException e) {e.printStackTrace();}synchronized (lockA){System.out.println("線程2獲取到了鎖A");}}});thread2.start();} }3、連接后找到線程欄,點(diǎn)擊死鎖檢測(cè)
可檢測(cè)到如下結(jié)果:
可以看到線程1的狀態(tài)是阻塞的,想要請(qǐng)求的資源被線程0占有
總結(jié)
以上是生活随笔為你收集整理的jconsole进行java死锁检测的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第八届蓝桥杯单片机省赛题目解析
- 下一篇: 单片机中断嵌套语句c语言,关于赛元单片机