死锁的四个条件
    1.互斥条件,同一时间内资源只能被一个线程拥有
    2.请求与保持条件,线程在申请别的锁的同时对自己的资源不肯释放
    3.不可剥夺条件,线程已获取的资源不能被抢占
    4.环路等待,多个线程抢占资源形成环状的关系

    如何解决死锁?
    银行家算法(通过记录系统中的资源,最大需求矩阵,分配矩阵和需求矩阵来保证系统只在安全状态下进行资源分配),但是死锁的主要原因是写代码逻辑没有滤清就上线,写代码的适合要注意加锁顺序,然后给锁设置一个过期时间打破不可剥夺条件,还有就是注意加锁的范围,只有访问共享资源的地方才加锁