Java基础 -> Java死锁如何避免?
Java死锁如何避免?
造成死锁的⼏个原因:
⼀个资源每次只能被⼀个线程使⽤
⼀个线程在阻塞等待某个资源时,不释放已占有资源
⼀个线程已经获得的资源,在未使⽤完之前,不能被强⾏剥夺
若⼲线程形成头尾相接的循环等待资源关系
- 这是造成死锁必须要达到的4个条件,如果要避免死锁,只需要不满⾜其中某⼀个条件即可。
- ⽽其中前3 个条件是作为锁要符合的条件
- 所以要避免死锁就需要
打破第4个条件
,不出现循环等待锁的关系。
这样记忆没有意义,所以换一种记忆的方式,锁的特点
- 加锁的资源只能同时被一个线程使用 ->
多个线程不能使用同一个资源
- 加锁的资源所在线程就算阻塞,也不会释放锁 ->
不释放已占有资源
- 加锁的资源所在线程不能强行释放锁 ->
资源未使⽤完之前,不能被强⾏剥夺
- 多个锁
嵌套使用
,容易造成循环等待资源
,产生死锁
在开发过程中:
要注意加锁顺序,保证每个线程按同样的顺序进⾏加锁
- 加锁的顺利要一致,不要出现
锁1嵌套锁2,锁2又嵌套锁1
的情况
- 加锁的顺利要一致,不要出现
要注意加锁时限,可以针对所设置⼀个超时时间
- Lock锁里面有一个
tryLock
的方法,可以设置一个超时时间,可以利用这个方法做一个获取锁时间上的限制
- Lock锁里面有一个
Java基础 -> Java死锁如何避免?相关推荐
- Java基础-Java中的堆内存和离堆内存机制
Java基础-Java中的堆内存和离堆内存机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 转载于:https://www.cnblogs.com/yinzhengjie/p/9 ...
- Java基础-JAVA中常见的数据结构介绍
Java基础-JAVA中常见的数据结构介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是数据结构 答:数据结构是指数据存储的组织方式.大致上分为线性表.栈(Stack) ...
- Java基础-Java中的内存分配与回收机制
Java基础-Java中的内存分配与回收机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一. 二. 转载于:https://www.cnblogs.com/yinzhengji ...
- Java基础——Java多继承的三种实现方式
Java基础--Java"多继承"的三种实现方式 Java语言本身只支持单继承(每个类只能有一个父类),但单继承的局限性很大,因此,可以通过以下的方式实现"多继承&quo ...
- [重学Java基础][Java IO流][Exter.2]IO流中几种不同的读写方法的区别
[重学Java基础][Java IO流][Exter.2]IO流中几种不同的读写方法的区别 Read 读入方法 read(): 一般是这种形式 public int read() 1.从流数据中读取的 ...
- Java基础----Java编程语言概述
Java基础----Java编程语言概述 文章目录 Java基础----Java编程语言概述 Java编程语言概述 1-1 软件开发介绍 1.1软件开发介绍 1.2 常用命令 1-2 计算机编程语言介 ...
- JAVA基础--JAVA SE(知识点总结 Ⅴ )
前面内容请见: JAVA基础–JAVA SE(知识点总结 Ⅰ ) JAVA基础–JAVA SE(知识点总结 Ⅱ ) JAVA基础–JAVA SE(知识点总结 Ⅲ ) JAVA基础–JAVA SE(知识 ...
- Java基础-Java中常用的锁机制与使用
Java基础-Java中常用的锁机制与使用 锁lock或互斥mutex是一种同步机制,主要用于在存在多线程的环境中强制对资源进行访问限制.锁的主要作用为强制实施互斥排他以及并发控制策略.锁一般需要硬件 ...
- java基础-java反射机制
2019独角兽企业重金招聘Python工程师标准>>> 引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓"登高必自卑,涉远必自迩" ...
- Java基础——Java IO详解
一.概述 1.Java IO Java IO即Java 输入输出系统.不管我们编写何种应用,都难免和各种输入输出相关的媒介打交道,其实和媒介进行IO的过程是十分复杂的,这要考虑的因素特别多,比如我们要 ...
最新文章
- 诚聘英才,共创未来!华南农业大学农学院高层次人才招聘
- UIPageViewController教程
- UVA 1366	 Martian Mining DP
- JQuery 中有用的方法
- 三角形一点到三边距离最小_高中数学:利用正弦定理、余弦定理求解三角形基础题...
- Taro+react开发(18)--定义变量值
- 实践单元测试(2) - 大话单元测试
- 唏嘘!一代国产手机巨头走向终点:官网已无法访问
- 数据科学即将迎来“无代码”时代
- 在rhel6 64位环境下部署LNMP环境
- 新手使用GitHub客户端提交本地项目到GitHub网站详细步骤
- 域名解析信息易语言代码
- 基于asp.net大学生助学贷款管理系统#毕业设计
- NetBeans修改字体中文乱码问题
- spider pi 智能视觉六足机器人 开箱介绍 0602
- 怎么查询计算机二级证书快递号,计算机二级office查询成绩后的注意事项证书直邮申请17到到23号...
- 图片不变形,按照等比例缩小或扩大显示
- Java哈希表及其应用
- 10月18号 蒟蒻的流水账
- 2020 蓝桥杯大学 B 组省赛模拟赛 七巧板
热门文章
- 将系统必备组件打包进安装文件(以vs15打包.net formwork 4.5为例)有点鸡肋
- projectManager
- pandas中关于DataFrame去掉重复行和NaN行
- 抖音账号主页设置推荐机制
- 【渝粤教育】 国家开放大学2020年春季 1459公共卫生伦理 参考试题
- 2022年Behance高清大图免费下载技术分享。WIN和MAC电脑通用,官方靠谱小工具。
- Ubuntu和Windows双系统服务器互相切换的简单方案
- 孤立词语音识别matlab,基于Matlab仿真的孤立词语音识别技术研究
- 《多媒体在初中数学中的运用研究》课题工作报告
- Ubuntu 蓝屏拯救