1.写一个死锁

   public static void main(String[] args) {Object lockA = new Object();Object lockB = new Object();new Thread(() -> {synchronized (lockA) {System.out.println(Thread.currentThread().getName() + ":持有lockA,希望继续获取lockB");try {TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}synchronized (lockB) {System.out.println(Thread.currentThread().getName() + ":获取到了lockB");}}}, "A").start();new Thread(() -> {synchronized (lockB) {System.out.println(Thread.currentThread().getName() + ":持有lockB,希望继续获取lockA");try {TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}synchronized (lockA) {System.out.println(Thread.currentThread().getName() + ":获取到了lockA");}}}, "B").start();}

2.查看执行过程

可以发现俩线程互相等待,程序无法结束,死锁已经出现


3.那我们如何进一步验证是出现了死锁呢?

第一种:

1.使用Java 自带的命令 jps -l  查看进程编码

2. 使用 jstack 7240 查看具体情况

结果就出来了,A持有950再等960,B持有960再等950

第二种:

使用 jconsole 可视化工具查看,也是java自带

这里就会明确提示死锁情况

java死锁,并快速检查是否存在死锁相关推荐

  1. Java并发核心知识体系精讲---死锁的前世今生

    声明:本文是自己自学慕课网悟空老师的<Java并发核心知识体系精讲>的死锁部分后整理而成课程笔记. 课程链接如下:https://coding.imooc.com/class/362.ht ...

  2. 什么是死锁,怎么检查死锁?

    目录 1.死锁 1.1 死锁概念 1.2 四个必要条件 2.死锁代码 3.检查死锁 3.1 jstack 3.2 图形化工具jconsole.exe 3.3 图形化工具jvisualvm.exe 1. ...

  3. Java多线程环境检测系统中是否存在死锁和死锁恢复代码示例

    文章目录 ManagementFactory介绍 死锁检测与恢复介绍 代码 公共资源类 导致死锁的模型 模型实现类 模拟死锁的程序类 ManagementFactory介绍 关于ManagementF ...

  4. java死锁的产生原因,操作系统产生死锁的原因和处理策略

    作者:Cyapirear 素材来源:华为开发者论坛 产生死锁的原因 当进程需要以独占的方式访问资源时,可能会发生死锁(Deadlock).死锁是指两个或以上进程因竞争临界资源而造成的一种僵局,即一个进 ...

  5. java 活锁 线程饿死,JAVA并发编程(四)线程死锁、饥饿、活锁

    JAVA并发编程(四)线程死锁 线程死锁 什么是线程死锁呢? 为什么会线程死锁呢? 如何避免线程死锁? 什么是饥饿呢? 什么是活锁呢? 线程死锁 什么是线程死锁呢? 死锁是指两个或两个以上的线程在执行 ...

  6. java的死锁是什么意思_Java面试题:什么是死锁?如何手写一个死锁(Dead Lock)...

    要想实现一个死锁,首先要明白什么是死锁,我们看一下死锁的定义: 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去.此时称 ...

  7. java中哲学家就餐死锁_哲学家就餐问题与死锁总结

    死锁的四个条件: (1) 互斥条件:一个资源每次只能被一个进程使用. (2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放. (3) 不剥夺条件:进程已获得的资源,在末使用完之前 ...

  8. Java并发知识点快速复习手册(下)

    前言 本文快速回顾了常考的的知识点,用作面试复习,事半功倍. 面试知识点复习手册 已发布知识点复习手册 Java基础知识点面试手册 快速梳理23种常用的设计模式 Redis基础知识点面试手册 Java ...

  9. 什么叫死锁?死锁案例?死锁必须满足哪些条件?如何定位死锁问题?有哪些解决死锁策略?哲学家问题?

    1.死锁是什么? 死锁一定发生在并发环境中,死锁是一种状态,当两个(或者多个线程)相互持有对方所需要的资源,却又都不主动释放手中持有的资源,导致大家都获取不到自己想要的资源,所有相关的线程无法继续执行 ...

最新文章

  1. iphone照片永久删除怎么恢复_怎么恢复删除的照片?专业数据恢复软件轻松搞定...
  2. 不知道这 7 大 OpenCV 函数怎么向计算机视觉专家进阶?
  3. jqGrid参数详解
  4. PhpStorm中绘画UML
  5. Unity教程之-UGUI美术字体的制作与使用
  6. SAP项目文档 清单 考核标准
  7. 应用程序服务器迁移:从JBoss EE5到Wildfly EE7
  8. Pandas iloc loc []
  9. java item 类型参数_Java8中对Lambda表达式中方法参数的类型推断(一)
  10. 一篇关于arc下内存管理的老文章,包含各种冷门修饰符(关于内存),写的较好,mark...
  11. qq一注销账号就服务器繁忙,qq熊熊怎样解除服务器繁忙的问题
  12. 数码照巧转胶片效果 美图秀秀制作质感写真
  13. 整理好心情,在春天里上路···
  14. [转]加盐hash保存密码的正确方式
  15. boost::python::detail::destroy_referent相关的测试程序
  16. Linux 下创建新用户并且添加为root组用户
  17. 用C语言实现汉诺塔的移动过程并且统计移动的次数
  18. html收藏页面代码,我的收藏页面.html
  19. 网络对大学生影响的调查研究报告
  20. svhost占用内存过高

热门文章

  1. 学习总结4.1 Linux文件权限修改
  2. Java中自定义注解的使用
  3. 3串12.6V3.3A锂电池充电器规格书
  4. PhpStorm破解版及使用教程2017版本
  5. GUI自动化 - 删除企业微信某人聊天记录
  6. 有两个磁盘文件 A 和 B, 各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列), 输出到一个新文件 C 中
  7. 4001 - win10家庭版安装docker、T-search(笔记)
  8. mysql如何优化联合索引abc使用
  9. java script check radio
  10. 不求甚解-Shiro