java学习笔记1:什么是死锁(基础浅谈)
1.什么是死锁?
死锁是指多个进程因竞争资源而造成的僵局,即相互等待的现象;
如果没有外力的作用,这些进程都将无法向前推进。
2.产生死锁的4个必要条件(即必须同时满足这4个条件才可能出现死锁)
①互斥条件:
在一段时间内 ,一个资源每次只能被一个进程所使用。如果其他进程请求该资源,则只能等待。
②请求和保持条件:
一个进程至少保持一个资源,且提出了新的资源请求,而该资源已被其他进程所占有,此时请求进程被阻塞,且对自己已有的资源保持不放。
(换个说法:一个进程因请求资源而阻塞,对已有资源保持不放)
③不剥夺条件:
进程已经获得的资源,在未使用完之前,该资源不能被剥夺。
④循环等待条件:
若干进程之间形成一种首尾相接的循环等待资源的关系。(即:循环等待链中的每一个进程已获得的资源同时被链中下一个进程所请求。