死锁发生的条件非常简单,假如某部分同步块代码中还存在一个同步块,即需要分别获得两个对象锁才可以执行完该部分代码块,而另一部分同步代码块也需要分别获得两个对象锁才可以执行完该部分代码块,则在获取锁时有可能会产生各拿一个却不释放,导致对方都拿不到第二个锁的情况,该种情况称为死锁。
死锁的解决思路也很简单,只要规定同步代码块必须按照同一个顺序去拿锁,即可解决死锁的发生,因为线程1拿到了锁1,此时线程2已经拿不到锁1了,自然不回去尝试获取锁2。
死锁发生的条件非常简单,假如某部分同步块代码中还存在一个同步块,即需要分别获得两个对象锁才可以执行完该部分代码块,而另一部分同步代码块也需要分别获得两个对象锁才可以执行完该部分代码块,则在获取锁时有可能会产生各拿一个却不释放,导致对方都拿不到第二个锁的情况,该种情况称为死锁。
死锁的解决思路也很简单,只要规定同步代码块必须按照同一个顺序去拿锁,即可解决死锁的发生,因为线程1拿到了锁1,此时线程2已经拿不到锁1了,自然不回去尝试获取锁2。