我正在阅读鲍勃叔叔的清洁守则,第13章的结论包括以下内容:
不要锁定不需要锁定的代码区域。避免从另一个锁定部分调用。
为什么建议不要从另一个锁定部分调用一个锁定部分(假设您持有可重入锁定)?这对我来说似乎完全可行。
答案 0 :(得分:1)
如果您需要同时锁定2个或更多对象,则没有其他方法可以从另一个锁定部分调用一个锁定部分。 为避免死锁,请始终以相同的顺序锁定对象。
答案 1 :(得分:0)
避免从另一个锁定部分调用。
指由不同锁定锁定的部分,如果您没有以相同的顺序获取锁定,则可能导致死锁。您可以在Java tutorials中找到此问题的一个有趣示例。