类似于问题I posted yesterday ,我有这个问题,我无法理解。代码非常简单,(我认为)应该会产生死锁。我什至将账户数量减少到2个,以增加死锁的可能性。
代码确实很容易理解,但需要提供一些上下文。我有一家有账户的银行,并且我在账户之间进行大量转账。传输方法应该会产生死锁。为什么没有发生这种情况?
我只能认为代码运行得太快了,但这似乎不太可能一直发生。
这是完整的代码: http://pastebin.com/HWJpuT38
最佳答案
问题出在这一行:
mAccounts = new ArrayList<Account>(Collections.nCopies(slots, new Account()));
基本上,只有一个 Account
对象,但有很多对它的引用。因此,您只能锁定单个对象。
如果您创建许多不同的 Account
对象,您应该能够很快看到死锁。
关于java - 这个简单的代码应该会产生死锁,但事实并非如此,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7835420/