清洁代码 - 从另一个调用一个锁定部分

时间:2017-02-10 12:54:25

标签: java concurrency

我正在阅读鲍勃叔叔的清洁守则,第13章的结论包括以下内容:

  

不要锁定不需要锁定的代码区域。避免从另一个锁定部分调用。

为什么建议不要从另一个锁定部分调用一个锁定部分(假设您持有可重入锁定)?这对我来说似乎完全可行。

2 个答案:

答案 0 :(得分:1)

如果您需要同时锁定2个或更多对象,则没有其他方法可以从另一个锁定部分调用一个锁定部分。 为避免死锁,请始终以相同的顺序锁定对象。

答案 1 :(得分:0)

  

避免从另一个锁定部分调用。

指由不同锁定锁定的部分,如果您没有以相同的顺序获取锁定,则可能导致死锁。您可以在Java tutorials中找到此问题的一个有趣示例。