产生死锁的条件有四个
互斥条件,
进程在某一时间内独占资源
请求与保持条件
一个进程因请求资源堵塞时,对于获得的资源保持不放,
不可剥夺条件
已获得资源,在未使用完毕时,不能强行剥夺
循环等待条件
若干进程之间形成一种头尾相接的循环等待资源关系
那么线程死锁是因为多线程,访问共享资源,由于访问的顺序不当所造成的的。通常是一个线程锁定了一个资源A,想要去锁定一个资源B,而另一个线程中锁定了资源B,想去锁定一个资源A已完成自身操作,而两个线程都不愿放弃自身资源,造成两个线程都在等待,而无法执行的情况。
要解决死锁就要从四个条件出发,只要破坏一个必要条件,那么死锁就解决了。