解決死鎖的4種基本方法(文末有驚喜)
1、預(yù)防死鎖:通過(guò)設(shè)置一些限制條件,去破壞產(chǎn)生死鎖的必要條件
2臂外、避免死鎖:在資源分配過(guò)程中,使用某種方法避免系統(tǒng)進(jìn)入不安全的狀態(tài)喇颁,從而避免發(fā)生死鎖
3漏健、檢測(cè)死鎖:允許死鎖的發(fā)生,但是通過(guò)系統(tǒng)的檢測(cè)之后橘霎,采取一些措施蔫浆,將死鎖清除掉
4、解除死鎖:該方法與檢測(cè)死鎖配合使用
死鎖介紹
死鎖是指兩個(gè)或兩個(gè)以上的進(jìn)程在執(zhí)行過(guò)程中姐叁,由于競(jìng)爭(zhēng)資源或者由于彼此通信而造成的一種阻塞的現(xiàn)象瓦盛,若無(wú)外力作用,它們都將無(wú)法推進(jìn)下去外潜。此時(shí)稱系統(tǒng)處于死鎖狀態(tài)或系統(tǒng)產(chǎn)生了死鎖原环,這些永遠(yuǎn)在互相等待的進(jìn)程稱為死鎖進(jìn)程。
產(chǎn)生條件
雖然進(jìn)程在運(yùn)行過(guò)程中处窥,可能發(fā)生死鎖嘱吗,但死鎖的發(fā)生也必須具備一定的條件,死鎖的發(fā)生必須具備以下四個(gè)必要條件滔驾。
1)互斥條件:指進(jìn)程對(duì)所分配到的資源進(jìn)行排它性使用谒麦,即在一段時(shí)間內(nèi)某資源只由一個(gè)進(jìn)程占用。如果此時(shí)還有其它進(jìn)程請(qǐng)求資源哆致,則請(qǐng)求者只能等待绕德,直至占有資源的進(jìn)程用畢釋放。
2)請(qǐng)求和保持條件:指進(jìn)程已經(jīng)保持至少一個(gè)資源沽瞭,但又提出了新的資源請(qǐng)求迁匠,而該資源已被其它進(jìn)程占有,此時(shí)請(qǐng)求進(jìn)程阻塞驹溃,但又對(duì)自己已獲得的其它資源保持不放。
3)不剝奪條件:指進(jìn)程已獲得的資源延曙,在未使用完之前豌鹤,不能被剝奪,只能在使用完時(shí)由自己釋放枝缔。
4)環(huán)路等待條件:指在發(fā)生死鎖時(shí)布疙,必然存在一個(gè)進(jìn)程——資源的環(huán)形鏈蚊惯,即進(jìn)程集合{P0,P1灵临,P2截型,···,Pn}中的P0正在等待一個(gè)P1占用的資源儒溉;P1正在等待P2占用的資源宦焦,……,Pn正在等待已被P0占用的資源顿涣。
小關(guān)注來(lái)一波波闹,小編為你們準(zhǔn)備了最新java學(xué)習(xí)資料文檔以及高清視頻教程,有需要的小伙伴掃一掃更直接