死鎖: 可以認為是兩個線程或進程在請求對方占有的資源。
饑餓:壹個線程在無限地等待另外兩個或多個線程相互傳遞使用並且用不會釋放的資源。
出現以下四種情況會產生死鎖:
1,相互排斥。壹個線程或進程永遠占有***享資源,比如,獨占該資源。
2,循環等待。例如,進程A在等待進程B,進程B在等待進程C,而進程C又在等待進程A。
3,部分分配。資源被部分分配,例如,進程A和B都需要訪問壹個文件,同時需要用到打印機,進程A得到了這個文件資源,進程B得到了打印機資源,但兩個進程都不能獲得全部的資源了。
4,缺少優先權。壹個進程獲得了該資源但是壹直不釋放該資源,即使該進程處於阻塞狀態。
擴展資料
死鎖和活鎖的區別:活鎖和死鎖很像似。 只是活鎖的狀態可以發生改變。不過雖然狀態可以改變,卻沒有實質的進展。比如兩個人在壹個很宅的胡同裏。 壹次只能並排過兩個人。 兩人比較禮貌,都要給對方讓路。 結果壹起要麽讓到左邊,要麽讓到右邊,結果仍然是誰也過不去。 類似於原地踏步或者震蕩狀態。
活鎖壹般是由於對死鎖的不正確處理引起的。由於處於死鎖中的多個線程同時采取了行動。 而避免的方法也是只讓壹個線程釋放資源。