首页 > 编程语言 >Java:死锁及避免方法

Java:死锁及避免方法

时间:2022-10-28 09:44:15浏览次数:45  
标签:Java 对象 代码 路径 避免 死锁 用到

死锁

因为我其他文章有贴过死锁的代码,就不贴了。说下什么是死锁。
举个生活的例子:两个女孩打架,互相揪着对方的头发不松手,让对方先放她才放。嗯,这个情况就是死锁。

死锁的必备条件

  1. 死锁必须至少具备两个及以上的锁对象
  2. 在不同的执行代码路径中,用到了2个及以上的锁对象。比如A代码路径用到C,D锁,B代码路径也用到了C,D锁

如何避免

  1. 少嵌套锁。比如说在同步代码块中尽量少去再嵌一层同步代码块
  2. 检查当前的代码执行路径,是否包含了两个及以上锁对象。如果有,检查这些锁的其他调用路径有哪些,其他路径如果也包含了两个及以上相同的锁对象,很可能会导致死锁,此种情况尽量避免

标签:Java,对象,代码,路径,避免,死锁,用到
From: https://www.cnblogs.com/ibcdwx/p/16834798.html

相关文章

  • java8-笔记
    获取某个字段的值List<Integer>num=modelList.stream().map(model::getID).collect(Collectors.toList());根据某个字段去重再获取某个字段的值。List<CallBillModel......
  • 9.使用JAVA的方式配置Spring
    9.使用JAVA的方式配置Spring我们现在要完全不使用Spring的XML配置了,全部交给java来做JavaConfig是Spring的一个子项目,在Spring4之后它成为了核心功能  9.1.Compone......
  • 关于JAVA项目中的常用的异常处理情况
    异常(Exception):发生于程序执行期间,表明出现了一个非法的运行状况。许多JDK中的方法在检测到非法情况时,都会抛出一个异常对象。例如:数组越界和被0除。异常处理的目的是依据......
  • 不同角度理解线程的状态(操作系统 & Java API)
    3.12五种状态(操作系统层面)这是从操作系统层面来描述的【初始状态】仅是在语言层面创建了线程对象,还未与操作系统线程关联【可运行状态】(就绪状态)指该线程......
  • 多个tomcat一台服务器上运行时(JAVA)环境配置
    一,修改配置文件server.xml的端口C:\apache-tomcat-5.5.23-1\conf\server.xml用记事本什么的打开修改3个地方 第一:<Serverport="9005"shutdown="SHUTDOWN">----原来......
  • 双系统(win 10)开机显示切换菜单,避免进入系统后再选择的办法
    第一步:关闭两个系统的(快速启动)功能,否则自动略过旧版bcd管理器界面第二步:开启win10的(旧版启动管理器):bcdedit/set{bootmgr}displaybootmenuYes恢复:bcdedit/dele......
  • Java多线程(5):CAS
     您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~  在JDK1.5之前,Java的多线程都是靠synchronized来保证同步的,这会引起很多性能问题,例如死锁。但随着Java的不断完善,J......
  • 基于springboot+vue物资管理系统java物资统计系统(源码调试+讲解+文档)
    ......
  • JavaScript 手写深拷贝
    深拷贝深拷贝就是要拷贝的对象内的所有引用类型的属性进行完整的拷贝;也就是说拷贝出来的对象和原对象之间没有任何数据是共享的,所有的东西都是自己独占的一份;三步实现深......
  • java中类的关系的总结
    类和类之间存在多种关系,而这种关系在我们的代码中司空见惯,有时多种类关系很难区分(由于水平有限,没有画出类的关系图,关系图可以参考参考链接)继承关系继承是指一个子类......