那我们怎么确定一定是死锁呢?有两种方法。

  1>使用JDK给我们的的工具JConsole,可以通过打开cmd然后输入jconsole打开。

    1)连接到需要查看的进程。

2)打开线程选项卡,然后点击左下角的“检测死锁”

    3)jconsole就会给我们检测出该线程中造成死锁的线程,点击选中即可查看详情:

     从上图中我们可以看出:

      ①在线程Thread-1中,从状态可以看出,它想申请Paper这个资源,但是这个资源已经被Thread-0拥有了,所以就堵塞了。

      ②在线程Thread-0中,从状态可以看出,它想申请Pen这个资源,但是这个资源已经被Thread-1拥有了,所以就堵塞了。

    Thread-1一直等待paper资源,而Thread--一直等待pen资源,于是这两个线程就这么僵持了下去,造成了死锁。

  2>直接使用JVM自带的命令

    1)首先通过 jps 命令查看需要查看的Java进程的vmid,如图,我们要查看的进程TestDeadLock的vmid号是7412;

    

    2)然后利用 jstack 查看该进程中的堆栈情况,在cmd中输入 jstack -l 7412 ,移动到输出的信息的最下面即可得到:

    

    至此,相信大家都会看了吧,具体就不说啦,根据输出,找到问题所在的代码,开始调试解决即可啦。

最新文章

  1. 【PHP面向对象(OOP)编程入门教程】10.__set(),__get(),__isset(),__unset()四个方法的应用
  2. MongoDB 基础 -安全性-(权限操作)
  3. 基于.net mvc的校友录(源程序)
  4. Hibernate逍遥游记-第15章处理并发问题-003乐观锁
  5. iOS 沙盒路径获取,创建文件
  6. Dr.com校园网客户端故障解决方法
  7. new Date参数问题
  8. poj 3258 River Hopscotch 二分
  9. GoldenGate配置(二)之双向复制配置
  10. unity中.meta提交错误操作导致空脚本
  11. Kafka,Mq,Redis作为消息队列使用时的差异?
  12. Git Submodule简单操作
  13. Python读取xlsx翻译文案
  14. cxf配置
  15. SqlDbx 个人版本使用指定的instant client
  16. 4.2计算字符的ASCII碼
  17. 7.1 安装软件包的三种方法 7.2 rpm包介绍 7.3 rpm工具用法 7.4 yum工具用法 7.5 yum搭建本地仓库
  18. PHP函数总结 (二)
  19. (笔试题)质数因子Prime Factor
  20. https nginx openssl 自签名

热门文章

  1. runv nslistener源码分析
  2. java1.8函数式接口
  3. JS中的“!!”
  4. [No000085]C#反射Demo,通过类名(String)创建类实例,通过方法名(String)调用方法
  5. 关于ES6新增的东西(二)
  6. Metasploit爆破tcpwrapped服务
  7. Java里String.split需要注意的用法
  8. 【bzoj1076】 SCOI2008—奖励关
  9. Mysql 视图 游标 触发器 存储过程 事务
  10. python 爬取乌云所有厂商名字,url,漏洞总数 并存入数据库