Java内存模型又回来了
Java內(nèi)存模型已經(jīng)被遺忘了九年多了,但是大多數(shù)開放源代碼Java支持者都希望對其進(jìn)行現(xiàn)代化,并專注于并發(fā),因為Java內(nèi)存模型中引入的過程僅朝現(xiàn)代化邁出了一步 。
一個JEP(JDK增強建議),編號188 ,已于本月發(fā)布,它提供了對影響Java SE(標(biāo)準(zhǔn)版),JVM支持,測試和工具的共享內(nèi)存并發(fā)工作的指導(dǎo)。
根據(jù)JEP文檔,在設(shè)計并發(fā)和并行平臺時,指定共享內(nèi)存一致性模型以及開發(fā)和維護(hù)符合它們的功能和組件是最核心但最困難的問題之一。 隨著時間的推移,規(guī)格限制,錯誤和意外后果變得顯而易見。 出現(xiàn)了擺脫現(xiàn)有界限的新硬件平臺,編程技術(shù)以及軟件組件和工具。
JEP試圖解決上述問題。 它還擴展了Java內(nèi)存模型的覆蓋范圍,該內(nèi)存模型最近一次與Java SE 5一起發(fā)布于2004年9月,與Java SE 7的當(dāng)前版本和3月將要發(fā)布的Java SE 8的新版本相去甚遠(yuǎn)。
正如該提案的作者Doug Lea所解釋的那樣,內(nèi)存模型提出了關(guān)于線程與內(nèi)存如何交互的形式化的,主要是數(shù)學(xué)表達(dá)的規(guī)則。 最終所有Java線程操作和同步都是根據(jù)內(nèi)存模型指定的。 該模型可用于修訂Java語言規(guī)范,改進(jìn)實現(xiàn),支持新的并發(fā)功能以及開發(fā)新的編程工具。
如果JEP努力取得成功,則可能會導(dǎo)致整個平臺的各種增強,調(diào)整和錯誤修復(fù)。 某些不常見的邊界編程構(gòu)造也可能會出現(xiàn)問題。 但是不會對向后兼容性或不相關(guān)的規(guī)范或API產(chǎn)生進(jìn)一步的影響。 另一方面,如果努力未能實現(xiàn)其目標(biāo),那么目前的局勢將繼續(xù)保持下去。
該提案將以改進(jìn)基礎(chǔ)內(nèi)存模型的形式化為特征,其中修訂后的模型將在機械上可檢查且更易于理解。 現(xiàn)有錯誤也將得到解決,JVM覆蓋率將與C11 / C ++兼容性和實現(xiàn)指南一起得到解決。
根據(jù)該建議,很難測試是否符合存儲器模型的要求,因此,希望工程師能夠設(shè)計和實施具有清晰基礎(chǔ)規(guī)格的測試。 重新開發(fā)的模型將適合開發(fā)工具使用,這些工??具可以分析檢查并發(fā)執(zhí)行期間的競爭條件和安全屬性維護(hù)等錯誤。
Lea曾在JCP(Java社區(qū)流程)執(zhí)行委員會任職,但于2010年離職。Lea澄清說,盡管JCP可能會參與該工作的副產(chǎn)品,但內(nèi)存模型建議并非JCP的工作。
翻譯自: https://www.javacodegeeks.com/2014/01/java-memory-model-is-back.html
總結(jié)
以上是生活随笔為你收集整理的Java内存模型又回来了的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多数人反馈不喜欢,比亚迪海豹出口欧洲车型
- 下一篇: Java 8类型注释