博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通过jvm 查看死锁
阅读量:4925 次
发布时间:2019-06-11

本文共 1462 字,大约阅读时间需要 4 分钟。

jstack -l jvm_pid

 

运行以下代码之后运行上面命令,可以在控制台上看到死锁。

 

public class DeadLock {    public static String obj1 = "obj1";    public static String obj2 = "obj2";    public static void main(String[] args){        Thread a = new Thread(new Lock1());        Thread b = new Thread(new Lock2());        a.start();        b.start();    }    }class Lock1 implements Runnable{    @Override    public void run(){        try{            System.out.println("Lock1 running");            while(true){                synchronized(DeadLock.obj1){                    System.out.println("Lock1 lock obj1");                    Thread.sleep(3000);//获取obj1后先等一会儿,让Lock2有足够的时间锁住obj2                    synchronized(DeadLock.obj2){                        System.out.println("Lock1 lock obj2");                    }                }            }        }catch(Exception e){            e.printStackTrace();        }    }}class Lock2 implements Runnable{    @Override    public void run(){        try{            System.out.println("Lock2 running");            while(true){                synchronized(DeadLock.obj2){                    System.out.println("Lock2 lock obj2");                    Thread.sleep(3000);                    synchronized(DeadLock.obj1){                        System.out.println("Lock2 lock obj1");                    }                }            }        }catch(Exception e){            e.printStackTrace();        }    }}

 

转载于:https://www.cnblogs.com/IamThat/p/6507548.html

你可能感兴趣的文章
java几种常用的算法
查看>>
关于图书管理系统简单的定位
查看>>
MSIL指令大全
查看>>
Java基础_面向对象之接口
查看>>
微信小程序开发中的二三事之网易云信IMSDK DEMO
查看>>
RXSwift 入坑记
查看>>
消息模式Toast.makeText用法
查看>>
IOS学习路线图
查看>>
UWP Tiles
查看>>
记录JavaScript的util.js类库
查看>>
2017.10.16
查看>>
JavaWeb学习笔记——jsp基础语法
查看>>
从url中拿参数和传递参数。正则获取参数
查看>>
Oracle DML(insert,update,delete)数据操纵语言
查看>>
linux+Apache开启伪静态配置
查看>>
将Excel 2007表格发布到MOSS列表,发布后的表格和可以和MOSS列表双向同步
查看>>
Spring 简单读取文件
查看>>
简单的web三层架构系统【第三版】
查看>>
EasyUI - Tabs
查看>>
PHP - 数组
查看>>