10.1 死锁

10.1.1 锁顺序死锁

如果所有线程以固定的顺序来获得锁,那么在程序中就不会出现锁顺序死锁问题

10.1.2 动态的锁顺序死锁

10.1.3 在协作对象之间发生的死锁

如果在持有锁时调用某个外部方法,那么将出现活跃性问题。在这个外部方法中可能会获取其他锁,或者阻塞时间过长,导致其他线程无法及时获得当前被持有的锁

10.1.4 开放调用

在调用某个方法时不需要持有锁

10.1.5 资源死锁

10.2 死锁的避免与诊断

10.2.1 支持定时的锁

10.2.2 通过线程转储信息来分析死锁

10.3 其他活跃性危险

10.3.1 饥饿

10.3.2 糟糕的响应性

10.3.3 活锁