锁排序确实是解决方案,所以您是对的。编译器会警告您,因为它无法确保 所有 锁定 均已按
顺序进行—它不够聪明,无法检查您的代码,并且不够聪明,知道可能还有更多的代码。
另一种解决方案是锁定一个封闭的对象,例如,对于一个用户帐户内的转账,您可以锁定用户。用户之间的转移并非如此。
话虽如此,您可能不必依靠Java锁定来进行传输:您需要一些数据存储,通常是数据库。如果使用数据库,锁定将移至存储。仍然适用相同的原则:您订购锁以避免死锁;您可以升级锁以简化锁定。

锁排序确实是解决方案,所以您是对的。编译器会警告您,因为它无法确保 所有 锁定 均已按
顺序进行—它不够聪明,无法检查您的代码,并且不够聪明,知道可能还有更多的代码。
另一种解决方案是锁定一个封闭的对象,例如,对于一个用户帐户内的转账,您可以锁定用户。用户之间的转移并非如此。
话虽如此,您可能不必依靠Java锁定来进行传输:您需要一些数据存储,通常是数据库。如果使用数据库,锁定将移至存储。仍然适用相同的原则:您订购锁以避免死锁;您可以升级锁以简化锁定。