Java开发中 怎样预防和处理死锁问题?
2012-06-07 00:08
344 查看
实际团体协作开发过程中,各个模块交叉调用(持有了一个锁后调用其他模块的方法,而其他模块的方法又需要持有锁),相互等待就有可能会出现死锁,因为本来模块相互调用一般不关心具体实现,只依赖于接口
解决方式:
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开发中 怎样预防和处理死锁问题?
- java web开发 高并发问题处理【总结】
- 【Java开发常见问题解决】文本框表情emoji字符过滤处理方法
- Java Web 开发中乱码问题的处理
- java日志丢失故障处理导致的死锁问题
- 在JAVA开发中的中文处理问题及解决办法
- 在JAVA开发中的中文处理问题及解决办法
- 在java中开发Ajax过程中的乱码问题与处理
- Java开发环境配置(2)--jdk配置和 多个JDK问题处理
- JAVA开发(4) -JVM 内存溢出问题的解决
- JAVA Web 安全机制----使用filter验证session用户和页面缓存问题处理
- Java线程(七):锁对象Lock-同步问题更完美的处理方式
- chrome插件开发之:关于使用日期插件以及处理UI被覆盖的问题
- vuejs开发组件分享之H5图片上传、压缩及拍照旋转的问题处理
- Java线程(八):锁对象Lock-同步问题更完美的处理方式
- Atitit.软件开发概念(11)--网络子系统--url编码 空格问题URLEncoder java js php
- 用SavePoint实现事务处理(转自中国java开发论坛)
- mysql的utf8mb4编码以及java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' 问题的处理
- 笔记63 | 个人项目“易来”开发记录《二》处理Fragment中返回的问题
- java开发中的日期处理