国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

死鎖與活鎖的區(qū)別

YPHP / 1806人閱讀

摘要:產(chǎn)生死鎖的必要條件互斥條件所謂互斥就是進(jìn)程在某一時(shí)間內(nèi)獨(dú)占資源。活鎖和死鎖的區(qū)別在于,處于活鎖的實(shí)體是在不斷的改變狀態(tài),所謂的活,而處于死鎖的實(shí)體表現(xiàn)為等待活鎖有可能自行解開,死鎖則不能。

死鎖:是指兩個(gè)或兩個(gè)以上的進(jìn)程(或線程)在執(zhí)行過程中,因爭(zhēng)奪資源而造成的一種互相等待的現(xiàn)象,若無外力作用,它們都將無法推進(jìn)下去。

產(chǎn)生死鎖的必要條件:
互斥條件:所謂互斥就是進(jìn)程在某一時(shí)間內(nèi)獨(dú)占資源。
請(qǐng)求與保持條件:一個(gè)進(jìn)程因請(qǐng)求資源而阻塞時(shí),對(duì)已獲得的資源保持不放。
不剝奪條件:進(jìn)程已獲得資源,在末使用完之前,不能強(qiáng)行剝奪。
循環(huán)等待條件:若干進(jìn)程之間形成一種頭尾相接的循環(huán)等待資源關(guān)系。

活鎖:任務(wù)或者執(zhí)行者沒有被阻塞,由于某些條件沒有滿足,導(dǎo)致一直重復(fù)嘗試,失敗,嘗試,失敗。

活鎖和死鎖的區(qū)別在于,處于活鎖的實(shí)體是在不斷的改變狀態(tài),所謂的“活”, 而處于死鎖的實(shí)體表現(xiàn)為等待;活鎖有可能自行解開,死鎖則不能。

饑餓:一個(gè)或者多個(gè)線程因?yàn)榉N種原因無法獲得所需要的資源,導(dǎo)致一直無法執(zhí)行的狀態(tài)。

Java中導(dǎo)致饑餓的原因:
高優(yōu)先級(jí)線程吞噬所有的低優(yōu)先級(jí)線程的CPU時(shí)間。
線程被永久堵塞在一個(gè)等待進(jìn)入同步塊的狀態(tài),因?yàn)槠渌€程總是能在它之前持續(xù)地對(duì)該同步塊進(jìn)行訪問。
線程在等待一個(gè)本身也處于永久等待完成的對(duì)象(比如調(diào)用這個(gè)對(duì)象的wait方法),因?yàn)槠渌€程總是被持續(xù)地獲得喚醒。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/77674.html

相關(guān)文章

  • Java中常見死鎖與活鎖的實(shí)例

    摘要:比如兩個(gè)很有禮貌的人在同一條路上相遇,彼此給對(duì)方讓路,但是又在同一條路上遇到了。互相之間反復(fù)的避讓下去這種時(shí)候可以選擇一個(gè)隨機(jī)退讓,使得具備一定的隨機(jī)性 順序死鎖:過度加鎖,導(dǎo)致由于執(zhí)行順序的原因,互相持有對(duì)方正在等待的鎖 資源死鎖:多個(gè)線程在相同的資源上發(fā)生等待 由于調(diào)用順序而產(chǎn)生的死鎖 public class Test { Object leftLock = new ...

    wzyplus 評(píng)論0 收藏0
  • Java并發(fā)編程之旅總覽

    摘要:線程安全的概念什么時(shí)候線程不安全怎樣做到線程安全怎么擴(kuò)展線程安全的類對(duì)線程安全的支持對(duì)線程安全支持有哪些中的線程池的使用與中線程池的生命周期與線程中斷中的鎖中常見死鎖與活鎖的實(shí)例線程同步機(jī)制顯示鎖使用與原理原理剖析原理中的與原理偏向鎖狀態(tài) showImg(https://segmentfault.com/img/bVblUE9?w=1354&h=1660); 線程安全的概念 showI...

    Harpsichord1207 評(píng)論0 收藏0
  • Java并發(fā)

    摘要:對(duì)象改變條件對(duì)象當(dāng)前線程要等待線程終止之后才能從返回。如果線程在上的操作中被中斷,通道會(huì)被關(guān)閉,線程的中斷狀態(tài)會(huì)被設(shè)置,并得到一個(gè)。清除線程的中斷狀態(tài)。非公平性鎖雖然可能造成饑餓,但極少的線程切換,保證其更大的吞吐量。 聲明:Java并發(fā)的內(nèi)容是自己閱讀《Java并發(fā)編程實(shí)戰(zhàn)》和《Java并發(fā)編程的藝術(shù)》整理來的。 showImg(https://segmentfault.com/im...

    SKYZACK 評(píng)論0 收藏0
  • 解決死鎖的100種方法

    摘要:雖然本文是一篇介紹死鎖及其解決方式的文章,但是對(duì)于多線程程序中的非死鎖問題我們也應(yīng)該有所了解,這樣才能寫出正確且高效的多線程程序。 死鎖是多線程編程或者說是并發(fā)編程中的一個(gè)經(jīng)典問題,也是我們?cè)趯?shí)際工作中很可能會(huì)碰到的問題。相信大部分讀者對(duì)死鎖這個(gè)詞都是略有耳聞的,但從我對(duì)后端開發(fā)崗位的面試情況來看很多同學(xué)往往對(duì)死鎖都還沒有系統(tǒng)的了解。雖然死鎖聽起來很高深,但是實(shí)際上已經(jīng)被研究得比較透徹...

    caige 評(píng)論0 收藏0
  • 實(shí)戰(zhàn)java高并發(fā)程序設(shè)計(jì)第一章

    摘要:通過指令重排可以減少流水線停頓提升巨大效率原則程序順序原則一個(gè)線程內(nèi)保證語義的串行性。鎖規(guī)則解鎖必然發(fā)生在隨后的加鎖前。線程的方法先于它的每一個(gè)動(dòng)作。 1. 基本概念 同步(Synchronous)和異步(Asynchronous) 并發(fā)(Conncurrency)和并行(Parallelism) 臨界區(qū) 阻塞(Blocking)與非阻塞(Non-Blocking) 死鎖(Deadl...

    moven_j 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<