形成死锁的必要条件(4个)

形成死锁的4个必要条件:

1、互斥条件:在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,就只能等待,直至占有资源的进程用毕释放。

2、占有且等待条件:指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。

3、不可抢占条件:别人已经占有了某项资源,你不能因为自己也需要该资源,就去把别人的资源抢过来。

4、循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。(比如一个进程集合,A在等B,B在等C,C在等A)。

 

如何避免线程死锁呢?

1、避免一个线程同时获得多个锁;

2、避免一个线程在锁内同时占用多个资源,尽量保证每个锁只占用一个资源;

3、尝试使用定时锁,使用lock.tryLock(timeout)来替代使用内部锁机制。

posted @ 2021-04-25 13:45  ~遇见阳光~  阅读(1777)  评论(0编辑  收藏  举报