造成死锁的原因可以概括成三句话:
-
当前线程拥有其他线程需要的资源
-
当前线程等待其他线程已拥有的资源
-
都不放弃自己拥有的资源
避免死锁可以概括成三种方法:
-
固定加锁的顺序(针对锁顺序死锁)
-
开放调用(针对对象之间协作造成的死锁)
-
使用定时锁-->
tryLock()
-
如果等待获取锁时间超时,则抛出异常而不是一直等待!
-
造成死锁的原因可以概括成三句话:
当前线程拥有其他线程需要的资源
当前线程等待其他线程已拥有的资源
都不放弃自己拥有的资源
避免死锁可以概括成三种方法:
固定加锁的顺序(针对锁顺序死锁)
开放调用(针对对象之间协作造成的死锁)
使用定时锁-->tryLock()
如果等待获取锁时间超时,则抛出异常而不是一直等待!