阻塞型锁

1 死锁(deadlock)

   概念: 多个线程互相等待多方释放资源而一直没有执行

     一般来说,要出现死锁问题需要满足以下条件:

        1. 互斥条件:一个资源每次只能被一个线程使用。

        2. 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。

        3. 不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺。

        4. 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

只要破坏死锁 4 个必要条件之一中的任何一个,死锁问题就能被解决。

 2 活锁(livelock): 多个线程都释放资源给别的线程使用,导致没有线程拿到资源而正常执行

 3 优先级反转(priority inversion) :一个或多个线程因为种种原因无法获取所得的需要资源,导致一直无法执行。导致的原因往往是当前线程优先级不高导致没有资源,或某线程一直占着关键资源不放

猜你喜欢

转载自my.oschina.net/u/728453/blog/1593001
今日推荐