什么是线程死锁
死锁是指两个或两个以上的进程(线程)在执行过程中,由于竞争资源或者由于彼此通信而造 成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系 统产生了死锁,这些永远在互相等待的进程(线程)称为死锁进程(线程)。
多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地 阻塞,因此程序不可能正常终止。
如下图所示,线程A持有资源2,线程B持有资源1,他们同时都想申请对方的资源,所以 这两个线程就会互相等待而进入死锁状态。
形成死锁的四个必要条件長什么
1、 互斥条件:线程(进程)对于所分配到的资源具有排它性,即一个资源只能被一个线程(进程) 占用,直到被该线程(进程)释放
2、 请求与保持条件:一个线程(进程)因请求被占用资源而发生阻塞时,对已获得的资源保持 不放。
3、 不剥夺条件:线程(进程)已获得的资源在末使用完之前不能被其他线程强行剥夺,只有自 己使用完毕后才释放资源。
4、 循环等待条件:当发生死锁时,所等待的线程(进程)必定会形成一个环路(类似于死循环), 造成永久阻塞
如何避免线程死锁
我们只要破坏产生死锁的四个条件中的其中一个就可以了。

Was this helpful?

0 / 0

发表回复 0

Your email address will not be published.