小蔡学Java

关于死锁

2024-03-10 13:45 1236 0 JVM / JUC JUC死锁

死锁产生的条件是什么?

此时程序并没有结束,这种现象就是死锁现象...线程t1持有A的锁等待获取B锁,线程t2持有B的锁等待获取A的锁。

如何进行死锁诊断?

当程序出现了死锁现象,我们可以使用jdk自带的工具:jpsjstack

  • jps:输出JVM中运行的 进程状态信息
  • jstack:查看 java进程内线程的堆栈信息

解决步骤如下

第一:查看运行的线程

第二,使用jstack查看线程运行的情况,下图是截图的关键信息 运行命令:jstack -l 46032

其他解决工具,可视化工具

  • jconsole

用于对jvm的内存,线程,类 的监控,是一个基于 jmx 的 GUI 性能监控工具

打开方式:java 安装目录 bin目录下 直接启动 jconsole.exe 就行

  • VisualVM:故障处理工具 能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC的对象,反向查看分配的堆栈

打开方式:java 安装目录 bin目录下 直接启动 jvisualvm.exe就行

总结

死锁产生的条件是什么? 一个线程需要同时获取多把锁,这时就容易发生死锁 如何进行死锁诊断?

当程序出现了死锁现象,我们可以使用jdk自带的工具:jps和 jstack jps:输出JVM中运行的进程状态信息 jstack:查看java进程内线程的堆栈信息,查看日志,检查是否有死锁 如果有死锁现象,需要查看具体代码分析后,可修复 可视化工具jconsoleVisualVM也可以检查死锁问题

评论( 0 )

  • 博主 Mr Cai
  • 坐标 河南 信阳
  • 标签 Java、SpringBoot、消息中间件、Web、Code爱好者

文章目录