-
(1) 如果每次至多只能获得一个锁, 那么一定不会产生锁顺序死锁
(2) 如果必须获得多个锁, 必须考虑锁的顺序:
1° 尽可能减少锁的数量
2° 将获取锁时需要遵循的协议规范化
-
支持定时的锁
(1) 显示锁 java.util.concurrent.Lock接口中可以指定tryLock方法的超时时限, 超时后会返回bool值而不是一直阻塞
(2) 定时锁失败时, 并不需要知道失败的原因
-
通过__线程转储__分析死锁
(1) 线程转储
包含了各个运行中的线程的栈追踪信息; 每个线程持有哪些锁; 哪些栈帧中获得这些锁; 被阻塞的线程在等待获取哪一个锁……等信息
(2) P179 window,unix, ide中都有触发线程转储机制的方法
(3) 线程转储__对内部锁synchronized的精度很高__, 对显式锁Lock的支持不是很精确
chapter10_避免活跃性危险_2_死锁的避免与诊断
最新推荐文章于 2022-10-03 14:12:27 发布