假如线程 A 持有资源 2,线程 B 持有资源 1,他们同时都想申请对方的资源,所以这两个线程 就会互相等待而进入死锁状态。 避免死锁的几个常见方法: 避免一个线程同时获取多个锁 避免一个线程在锁内同时占用多个资源,尽量保证每个锁只占用一个资源。 尝试使用定时锁,使用 lock.tryLock(timeout) 来代替使用内部锁机制。