Java面试题(30)-java中如何避免死锁

什么是死锁:

死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去,这是一个严重的问题,因为死锁会让你的程序挂起无法完成任务,死锁的发生必须满足一下四个条件:

1、互斥条件:一个资源每次只能被一个进程使用

2、请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放

3、不剥夺条件:进程已获得的资源,在未使用完之前,不能进行强行剥夺

4、循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

如何解决死锁:

1、预防死锁:通过设置一些限制条件,去破坏产生死锁的必要条件

2、避免死锁:在资源分配过程中,使用某种方法避免系统进入不安全的状态,从而避免发生死锁

3、检测死锁:允许死锁的发生,但是通过系统的检测之后,采取一些措施,将死锁清除掉

4、解除死锁:该方法与检测死锁配合使用

你可能感兴趣的:(java面试题,java,面试,经验分享)