为什么80%的码农都做不了架构师?>>>   

死锁指的是两个线程都在等待另一个线程释放锁,比如:线程T1获取了锁L1然后在等待获取锁L2,线程T2获取了锁L2然后在等待获取锁L1,这样就产生了死锁。嵌套管程锁死指的是一个线程获取锁后在另一个锁上调用了wait进入等待另一个线程发送唤醒信号,比如L:线程T1获取了锁L1然后在锁L2上调用了wait方法,线程T2需要同时获取锁L1和L2才能向T1发送信号,这样就产生了嵌套管程锁死。

参考资料:

嵌套管程锁死

嵌套管程锁死 VS 死锁

嵌套管程锁死与死锁很像:都是线程最后被一直阻塞着互相等待。

但是两者又不完全相同。在死锁中我们已经对死锁有了个大概的解释,死锁通常是因为两个线程获取锁的顺序不一致造成的,线程1锁住A,等待获取B,线程2已经获取了B,再等待获取A。如死锁避免中所说的,死锁可以通过总是以相同的顺序获取锁来避免。
但是发生嵌套管程锁死时锁获取的顺序是一致的。线程1获得A和B,然后释放B,等待线程2的信号。线程2需要同时获得A和B,才能向线程1发送信号。所以,一个线程在等待唤醒,另一个线程在等待想要的锁被释放。

不同点归纳如下:

死锁中,二个线程都在等待对方释放锁。嵌套管程锁死中,线程1持有锁A,同时等待从线程2发来的信号,线程2需要锁A来发信号给线程1。

转载于:https://my.oschina.net/u/914290/blog/802812

简单的说一说java线程中的死锁和嵌套管程锁死问题?相关推荐

  1. java中线程死锁及避免_如何避免Java线程中的死锁?

    java中线程死锁及避免 如何避免Java中的死锁? 是Java面试中最受欢迎的问题之一,也是本季多线程的风格,主要是在高层提出,并带有很多后续问题. 尽管问题看起来很基础,但是一旦您开始深入研究,大 ...

  2. 如何避免Java线程中的死锁?

    如何避免Java死锁? 是Java面试中最受欢迎的问题之一,也是本季多线程的风格,主要是在高层提出,并带有很多后续问题. 尽管问题看起来很基础,但是一旦您开始深入研究,大多数Java开发人员就会陷入困 ...

  3. java线程如何避免死锁_Java面试问题,如何避免Java线程中的死锁?

    如何避免Java中的死锁?是流行的Java面试问题之一,也是多线程的流行话题之一.尽管问题看起来很简单,但是一旦深入,大多数Java开发人员就会陷入困境. 面试问题以"什么是死锁?" ...

  4. java线程中的死锁_Java多线程中的死锁 - Break易站

    Java 多线程 synchronized关键字用于使类或方法线程安全,这意味着只有一个线程可以锁定同步方法并使用它,其他线程必须等到锁定释放并且其中任何一个获得该锁定. 如果我们的程序在多线程环境中 ...

  5. java 线程 获取消息_获取java线程中信息

    怎样获取java线程中信息? 在进行多线程编程中,比较重要也是比较困难的一个操作就是如何获取线程中的信息.大多数人会采取比较常见的一种方法就是将线程中要返回的结果存储在一个字段中,然后再提供一个获取方 ...

  6. java 线程中创建线程_如何在Java 8中创建线程安全的ConcurrentHashSet?

    java 线程中创建线程 在JDK 8之前,还没有办法在Java中创建大型的线程安全的ConcurrentHashSet. java.util.concurrent包甚至没有一个名为Concurren ...

  7. Java 线程同步与死锁 学习笔记

    Java 线程同步与死锁 学习笔记 Java 线程同步与死锁 学习笔记 1 多线程共享数据 2 线程同步 3 同步准则 4 线程死锁 1. 多线程共享数据 在多线程操作中,多个线程可能同时处理同一个资 ...

  8. java多线程中的死锁、活锁、饥饿、无锁都是什么鬼?

    转载自 java多线程中的死锁.活锁.饥饿.无锁都是什么鬼? 死锁.活锁.饥饿是关于多线程是否活跃出现的运行阻塞障碍问题,如果线程出现了这三种情况,即线程不再活跃,不能再正常地执行下去了. 死锁 死锁 ...

  9. 19、Java并发性和多线程-嵌套管程锁死

    以下内容转自http://ifeve.com/nested-monitor-lockout/: 嵌套管程锁死类似于死锁, 下面是一个嵌套管程锁死的场景: 线程1获得A对象的锁. 线程1获得对象B的锁( ...

最新文章

  1. MYSQL-使用mysqldump创建数据库快照
  2. Web 开发中很实用的10个效果【附源码下载】
  3. 【完结】12篇文章带你逛遍主流分割网络
  4. 使用canvas实现数据可视化
  5. PHP的Smarty较为完整的笔记
  6. H - Square Card HDU - 7063
  7. Java 1-Java 基础语法
  8. 2019互联网月饼哪家强?阿里走情怀;百度最土豪;浪潮最高冷;抖音最创意 .........
  9. tex中的书签与链接hyperref
  10. 圣诞老人python代码_用Python画圣诞老人的N种方法
  11. Android NE问题分析方法介绍
  12. Github建个人静态网页
  13. “知识共享”国际许可协议4.0版本
  14. 2020.05.29
  15. NAO机器人——运动控制(3)
  16. SAP-abap学习记录(21)
  17. 解读阿里云NEXT ECS发布会,阿里云的基础设施有多牛
  18. MBI5020 LED驱动
  19. 微信事件推送原理猜想与小程序接口对接经验之谈(即时配送)
  20. JPG转CAD,JPG图片如何转换成CAD图纸?

热门文章

  1. Bert 中文使用方式
  2. 【调试工具】tcpdump
  3. tensorflow-gpu版本出现libcublas.so.8.0:cannot open shared object file
  4. shaderlab学习一
  5. 再学 GDI+[81]: TGPImage(1) - 显示图像
  6. python时间序列分析航空旅人_时间序列分析-ARIMA模型(python)
  7. 深圳大学 c语言,深圳大学C语言实验(3页)-原创力文档
  8. android studio写坦克大战代码_GitHub 项目推荐:俄罗斯小游戏、Markdown 幻灯片、头像生成器、Logo 制作、坦克大战...
  9. php mysql 时间戳查询_mysql中时间查询函数(包括时间戳)
  10. js php 获取时间倒计时_,js实现倒计时及时间对象