所谓死锁是一组互相竞争资源的线程,因为互相等待,导致“永久”阻塞现象。
原因:
1.互斥条件。共享资源x和y只能被一个线程占用。
2.占有且等待。线程t1已经取得共享资源x在等待共享资源x在等待共享资源y的时候,不释放共享资源x。
3.不可抢占。其他线程不能强行抢占线程t1占有的资源。
4.循环等待。线程t1等待线程t2占有的资源,线程t2等待线程t1占有的资源。
避免条件:
可一次性申请所有的资源
占有部分资源的线程进一步申请其他资源时,如果申请不到可以主动释放它占有的资源。
按顺序申请,资源是有线性顺序的。