线程死锁
多个线程各自占有一定的资源(拿到了对象锁),但又需要其他线程拥有的资源,互相等待对方释放资源,导致停止执行的情况。同时拥有两个以上的锁,就可能有死锁的问题。
产生死锁的四个必要条件:
1、互斥条件:一个资源每次只能被一个进程使用
2、请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
3、不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺。
4、循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
避免死锁的方法:
形成死锁有四个必要条件,只要想办法打破一个或多个就可以避免死锁发生。