• 1、互斥条件:一个资源每次只能被一个进程使用。
  • 2、保持和请求条件:一个进程因请求资源而阻塞时,对已获得资源保持不放。
  • 3、不可剥夺性:进程已获得资源,在未使用完成前,不能被剥夺。
  • 4、循环等待条件(闭环):若干进程之间形成一种头尾相接的循环等待资源关系。

如何避免死锁?只要破坏其中任意一个条件,就可以避免死锁

一种非常简单的避免死锁的方式就是:指定获取锁的顺序,并强制线程按照指定的顺序获取锁。因此,如果所有的线程都是以同样的顺序加锁和释放锁,就不会出现死锁了。