溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java編程語言常見缺陷是什么

發(fā)布時間:2021-12-01 17:05:20 來源:億速云 閱讀:166 作者:iii 欄目:編程語言

這篇文章主要講解了“Java編程語言常見缺陷是什么”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Java編程語言常見缺陷是什么”吧!

Java編程語言常見缺陷

正如我已經(jīng)展示過的,Java編程語言中的多線程編程是通過語言支持的大量精心設(shè)計的構(gòu)造實現(xiàn)的。另外,還設(shè)計了大量設(shè)計模式和指導(dǎo)原則,來幫助人們了解這種復(fù)雜性帶來的許多缺陷。除此之外,多線程編程會很容易地在不經(jīng)意間把細(xì)微的 bug 帶進(jìn)多線程代碼,而且更重要的是,這類問題分析和調(diào)試起來非常困難。接下來要介紹的是用 Java 語言進(jìn)行多線程編程時將會遇到(或者可能已經(jīng)遇到過)的最常見問題的一個列表。

Java編程語言爭用條件

據(jù)說 爭用條件 存在于這樣的系統(tǒng)中:多個線程之間存在對共享資源的競爭,而勝出者決定系統(tǒng)的行為。Allen Holub 在他撰寫的文章 “programming Java threads in the real world” 提供了一個帶有這樣 bug 的簡單的多線程程序示例。在沖突的訪問請求之間進(jìn)行不正確同步的另一個更可怕的后果是 數(shù)據(jù)崩潰,此時,共享的數(shù)據(jù)結(jié)構(gòu)有一部分由一個線程更新,而另一部分由另一個線程更新。在這種情況下,系統(tǒng)的行為不是按照勝出線程的意圖進(jìn)行,系統(tǒng)根本不按照任何一個線程的意圖行動,所以兩個線程***都將以失敗告終。

Java編程語言死鎖

死鎖 的情況是指:線程由于等候某種條件變成真(例如資源可以使用),但是它等候的條件無法變成真,因為能夠讓條件變成真的線程在等候***個線程“做某件事”。這樣,兩個線程都在等候?qū)Ψ较炔扇?**步,所以都無法做事。

Java編程語言活動鎖

活動鎖 與 死鎖 不同,它是在線程實際工作的時候發(fā)生的,但這時還沒有完成工作。這通常是在兩個線程交叉工作的時候發(fā)生,所以***個線程做的工作被另一個線程取消。一個簡單的示例就是:每個線程已經(jīng)擁有了一個對象,同時需要另外一個線程擁有的另外一個對象。可以想像這樣的情況:每個線程放下自己擁有的對象,撿起另外一個線程放下的對象。顯然,這兩個線程會永遠(yuǎn)都運行在上鎖這一步操作上,結(jié)果是什么都做不成。(常見的真實示例就是,兩個人在狹窄的走廊相遇。每個人都禮貌地讓到另一邊讓對方先行,但卻在相同的時間都讓到同一邊了,所以兩個人還都沒法通過。這種情況會持續(xù)一些時間,然后兩個人都從這邊閃到那邊,結(jié)果還是一點進(jìn)展也沒有。)

感謝各位的閱讀,以上就是“Java編程語言常見缺陷是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Java編程語言常見缺陷是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI