死锁

要发生死锁,必须满足以下4个条件:

  1. 互斥,共享资源 x 和 y 分别只能被一个线程占用;
  2. 占有且等待,线程 T1 已经取得共享资源 x,在等待共享资源 y 的时候,不是释放共享资源 x;
  3. 不可抢占,其他线程不能强行抢占线程 T1 占有的资源;
  4. 循环等待,线程 T1 等待线程 T2 占有的资源,线程 T2 等待线程 T1 占有的资源。

只要破坏其中一个条件,就能避免死锁的发生。