1、在程序中尽量使用开放调用。依赖于开放调用的程序,相比于那些在持有锁的时候还调用外部方法的程序,更容易进行死锁自由度的分析。重新构建synchronized使开放调用更加安全。所谓开放调用是指调用的方法本身没有加锁,但是要以对方法操作的内容进行加锁。
2、如果你必须获得多个锁,那么锁的顺序必须是你设计工作的一部分:尽量减少潜在锁之间的交互数量,遵守并文档化该锁顺序协议。监测代码中死锁自由度的策略有:
1)识别什么地方会获取多个锁,并使锁数量尽可能少,保证它们的顺序在程序中一致。
2)在没有非开放调用的程序中,发现那些获得多重锁的实例是非常简单的。
3、尝试定时的锁,使用每个显式Lock类中定时tryLock特性,来替代使用内部锁机制。
本文探讨了在软件开发过程中如何避免死锁的问题。提出了使用开放调用、规范锁的获取顺序以及尝试定时锁等策略,以确保程序的稳定运行。
1126

被折叠的 条评论
为什么被折叠?



