并发编程之美(1)并发编程基础二_会写代码的花城的博客-CSDN博客_并发编程之美
Blog iconUniGood
1…9线程死锁1.9.1什么是线程死锁死锁是指两个或两个以上的线程在执行过程中,因争夺资源而造成的互相等待的现象,在无外力作用的情况下,这些线程会一直相互等待而无法继续运行下去在这里插入图片描述线程A 己经持有了资源2 , 它同时还想申请资源l , 线程B 已经持有了资源l ,它同时还想申请资源2 , 所以线程l 和线程2 就因为相互等待对方已经持有的资源,而进入了死锁状态。 为什么会产生死锁呢?用原书(并发编程之美)中的解释 死锁的产生必须具备以下四个条件。互斥条件: 指线程对己经获取到的资源进行排它性使用, 即该资源同时只由一个线程占用。如果此时还有其他线程请求获取该资源,则请求者只能等待,直至占有资源的线程释放该资源。请求并持有条件: 指一个线程己经持有了至少一个资源, 但又提出了新的资源请求,而新资源己被其他线程占有,所以当前线程会被阻塞,但阻塞的同时并不释放自己己经获取的资源。不可剥夺条件: 指线程获取到的资源在自己使用完之前不能被其他线程抢占, 只有在自己使用完毕后才由自己释放该资源。环路等待条件: 指在发生死锁时, 必然存在一个线程→资源的环形链, 即线程集合{T0...

UniGood

Written by

I am a Java programmer.

Subscribe