您好,登錄后才能下訂單哦!
這篇文章主要講解了“Java編程語言常見缺陷是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java編程語言常見缺陷是什么”吧!
Java編程語言常見缺陷
正如我已經展示過的,Java編程語言中的多線程編程是通過語言支持的大量精心設計的構造實現的。另外,還設計了大量設計模式和指導原則,來幫助人們了解這種復雜性帶來的許多缺陷。除此之外,多線程編程會很容易地在不經意間把細微的 bug 帶進多線程代碼,而且更重要的是,這類問題分析和調試起來非常困難。接下來要介紹的是用 Java 語言進行多線程編程時將會遇到(或者可能已經遇到過)的最常見問題的一個列表。
Java編程語言爭用條件
據說 爭用條件 存在于這樣的系統中:多個線程之間存在對共享資源的競爭,而勝出者決定系統的行為。Allen Holub 在他撰寫的文章 “programming Java threads in the real world” 提供了一個帶有這樣 bug 的簡單的多線程程序示例。在沖突的訪問請求之間進行不正確同步的另一個更可怕的后果是 數據崩潰,此時,共享的數據結構有一部分由一個線程更新,而另一部分由另一個線程更新。在這種情況下,系統的行為不是按照勝出線程的意圖進行,系統根本不按照任何一個線程的意圖行動,所以兩個線程***都將以失敗告終。
Java編程語言死鎖
死鎖 的情況是指:線程由于等候某種條件變成真(例如資源可以使用),但是它等候的條件無法變成真,因為能夠讓條件變成真的線程在等候***個線程“做某件事”。這樣,兩個線程都在等候對方先采取***步,所以都無法做事。
Java編程語言活動鎖
活動鎖 與 死鎖 不同,它是在線程實際工作的時候發生的,但這時還沒有完成工作。這通常是在兩個線程交叉工作的時候發生,所以***個線程做的工作被另一個線程取消。一個簡單的示例就是:每個線程已經擁有了一個對象,同時需要另外一個線程擁有的另外一個對象。可以想像這樣的情況:每個線程放下自己擁有的對象,撿起另外一個線程放下的對象。顯然,這兩個線程會永遠都運行在上鎖這一步操作上,結果是什么都做不成。(常見的真實示例就是,兩個人在狹窄的走廊相遇。每個人都禮貌地讓到另一邊讓對方先行,但卻在相同的時間都讓到同一邊了,所以兩個人還都沒法通過。這種情況會持續一些時間,然后兩個人都從這邊閃到那邊,結果還是一點進展也沒有。)
感謝各位的閱讀,以上就是“Java編程語言常見缺陷是什么”的內容了,經過本文的學習后,相信大家對Java編程語言常見缺陷是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。