Java 死锁检测及避免

一、死锁是什么

  在多线程环境下,两条或者多条线程相互持有一些资源,由于竞争资源关系,导致线程堵塞,需要其他线程释放资源才能继续运行。这种情况就是死锁。

  比如:ABA问题

 

 二、检测死锁

  1. jps 工具

    jps(Java virtual machine process status tool)是JDK5提供的显示所有Java进程pid命令。

➜  ~ jps
79154 Launcher
77783
79309 Jps

  2. jstack 工具

    jstack是Java虚拟机提供的堆栈跟踪工具,jstack命令生成Java虚拟机当前时刻的线程快照。

    线程快照是Java虚拟机每条线程的方法堆栈集合,目的是检查线程长时间停顿的原因,如:线程死锁、死循环、请求外部资源的长时间等待。

  3. jconsole 工具

    jconsole是JDK5提供的内置Java性能分析工具。

 

posted @ 2021-11-01 14:38  naray  阅读(220)  评论(0编辑  收藏  举报