死锁

死锁是一种状态,如果两个线程分别战友一部分资源且同时等待对方的资源,就会引起死锁,如下代码:

这段代码就会导致死锁,程序只要运行就不会执行完毕,Thread1中使用mutea进行上锁且暂时没有解锁,但是Thread2也需要使用mutea进行上锁,导致了两个进程都要对锁等待其解锁之后才能继续进行下去,导致一直等待,变成死锁

避免死锁

  1. 在程序设计的时候尽量避免(银行家算法)
  2. 添加超时时间

银行家算法

允许进程动态地申请资源,系统在每次实施资源分配之前,先计算资源分配的安全性,若此次资源分配安全(即资源分配后,系统能按某种顺序来为每个进程分配其所需的资源,使每个进程都可以顺利地完成),便将资源分配给进程,否则不分配资源,让进程等待

详情:https://blog.csdn.net/qq_36260974/article/details/84404369