我写了一个游戏,有时会陷入死锁,在谷歌搜索该问题后,似乎锁定顺序方法可能有效,所以我到这里来确保它不会出现问题。
最多会有三个用户相互交互:A、B 和 C。
行动包括攻击、夺回和营救
示例:A攻击B,B从A手中夺回,A从C手中救出B
每个用户都有一个唯一的 ID
如果我在按 ID desc 或 asc 排序的用户对象上进行同步,则两个用户之间的交互似乎可以工作。但它可以在救援行动中与三个用户一起使用吗?
最佳答案
只要以相同的顺序获取所有锁,就不会出现死锁。因此,只要“A 从 C 拯救 B”按照 A、B、C 的顺序获取锁,并且“B 从 A 拯救 C”也按照 A、B、C 的顺序获取锁,您就可以应该没问题。
关于java - 这个同步锁顺序有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13725805/