1 死锁(deadlock)线程
概念: 多个线程互相等待多方释放资源而一直没有执行进程
通常来讲,要出现死锁问题须要知足如下条件:资源
1. 互斥条件:一个资源每次只能被一个线程使用。it
2. 请求与保持条件:一个进程因请求资源而阻塞时,对已得到的资源保持不放。io
3. 不剥夺条件:进程已得到的资源,在未使用完以前,不能强行剥夺。循环
4. 循环等待条件:若干进程之间造成一种头尾相接的循环等待资源关系。请求
只要破坏死锁 4 个必要条件之一中的任何一个,死锁问题就能被解决。阻塞
2 活锁(livelock): 多个线程都释放资源给别的线程使用,致使没有线程拿到资源而正常执行
3 优先级反转(priority inversion) :一个或多个线程由于种种缘由没法获取所得的须要资源,致使一直没法执行。致使的缘由每每是当前线程优先级不高致使没有资源,或某线程一直占着关键资源不放