什么是死锁

  • 两个线程或两个以上线程都在等待对方执行完毕才能继续往下执行的时候就发生了死锁。结果就是这些线程都陷入了无限的等待中。

如何确保N个线程可以访问N个资源同时又不导致死锁

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

产生死锁的四个必要条件

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

参考:https://www.cnblogs.com/xuedexin/articles/5691245.html