Java开发中 怎样预防和处理死锁问题?
来源:互联网 发布:物理数据独立性是指 编辑:程序博客网 时间:2024/04/30 08:56
实际团体协作开发过程中,各个模块交叉调用(持有了一个锁后调用其他模块的方法,而其他模块的方法又需要持有锁),相互等待就有可能会出现死锁,因为本来模块相互调用一般不关心具体实现,只依赖于接口
解决方式:
1)尽量使用tryLock(long timeout, TimeUnit unit)的方法(ReentrantLock、ReentrantReadWriteLock),设置超时时间,超时可以退出防止死锁。
2)尽量使用java.util.concurrent(jdk 1.5以上)包的并发类代替手写控制并发,比较常用的是ConcurrentHashMap、ConcurrentLinkedQueue、AtomicBoolean等等,实际应用中java.util.concurrent.atomic十分有用,简单方便且效率比使用Lock更高
3)尽量降低锁的使用粒度,尽量不要几个功能用同一把锁
4)尽量减少同步的代码块
解决方式:
1)尽量使用tryLock(long timeout, TimeUnit unit)的方法(ReentrantLock、ReentrantReadWriteLock),设置超时时间,超时可以退出防止死锁。
2)尽量使用java.util.concurrent(jdk 1.5以上)包的并发类代替手写控制并发,比较常用的是ConcurrentHashMap、ConcurrentLinkedQueue、AtomicBoolean等等,实际应用中java.util.concurrent.atomic十分有用,简单方便且效率比使用Lock更高
3)尽量降低锁的使用粒度,尽量不要几个功能用同一把锁
4)尽量减少同步的代码块
- Java开发中 怎样预防和处理死锁问题?
- mysql 如何预防死锁和处理死锁
- 处理死锁和预防死锁的方法
- 死锁的产生条件和预防处理
- 死锁和预防
- 进程死锁条件和预防
- 死锁的避免和预防
- 死锁 死锁的检测 预防和避免
- 死锁的产生和预防死锁
- PowerBuilder预防数据库死锁相关处理
- Linux_进程死锁?产生条件?产生原因?怎样预防?怎样检测死锁和解除死锁?
- 怎样预防和治疗遗精
- 死锁预防
- 死锁预防
- 【PB】PB程序死锁问题及预防
- 【PB】PB程序死锁问题及预防
- (六)事务的提交与回滚极死锁检测、处理和预防
- 死锁的产生、预防和避免
- 什么是数据库游标?
- jquery ajax post 被 Firefox搞死
- Python2.6 Cx_Oracle Linux下编译安装
- Oracle,SQLServer,Mysql,PostgreSQL数据库查询前10条比较
- 浅谈如何实现JSP上传图片无组件化
- Java开发中 怎样预防和处理死锁问题?
- Struts 2 File Upload and Save Tutorial with Example
- Android数据格式解析对象JSON用法
- mx.graphics包
- 每页都有一个合计
- automation01--视频预告和效果展示
- poj 1575 Easier Done Than Said?
- 敏捷书籍
- STM32自学详记录