线程死锁造成这个有4个因素,分别是互斥使用、占有且等待、不可抢占、循环等待。当死锁产生时,这4个因素就一定会存在的。
互斥使用,就是指资源在同一时间只能给一个线程使用。
占有且等待,就是线程占有原资源的同时,申请新的资源并等待。
不可抢占,就是其它线程无法夺取资源的控制权。资源只能由占有者释放。
循环等待,多个线程,占有多个资源的同时,申请对方的资源。形成一个循环等待的链条。
那么怎么避免死锁呢,就是破坏上面的条件之一。比如第四个条件,给个资源有序分配方案,打破循环链条,那么死锁就解决了。
微信扫一扫
线程死锁造成这个有4个因素,分别是互斥使用、占有且等待、不可抢占、循环等待。当死锁产生时,这4个因素就一定会存在的。
互斥使用,就是指资源在同一时间只能给一个线程使用。
占有且等待,就是线程占有原资源的同时,申请新的资源并等待。
不可抢占,就是其它线程无法夺取资源的控制权。资源只能由占有者释放。
循环等待,多个线程,占有多个资源的同时,申请对方的资源。形成一个循环等待的链条。
那么怎么避免死锁呢,就是破坏上面的条件之一。比如第四个条件,给个资源有序分配方案,打破循环链条,那么死锁就解决了。
相关推荐