java中內(nèi)存模型的作用是什么?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
為陸河等地區(qū)用戶(hù)提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及陸河網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站建設(shè)、做網(wǎng)站、陸河網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶(hù)提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶(hù)的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
Java的基本數(shù)據(jù)類(lèi)型分為:1、整數(shù)類(lèi)型,用來(lái)表示整數(shù)的數(shù)據(jù)類(lèi)型。2、浮點(diǎn)類(lèi)型,用來(lái)表示小數(shù)的數(shù)據(jù)類(lèi)型。3、字符類(lèi)型,字符類(lèi)型的關(guān)鍵字是“char”。4、布爾類(lèi)型,是表示邏輯值的基本數(shù)據(jù)類(lèi)型。
1、概念
Java內(nèi)存模型(Java Main Memory簡(jiǎn)稱(chēng)JMM)是一個(gè)抽象概念,和計(jì)算機(jī)的內(nèi)存模型有很多相似的地方。JMM主要包括線程、工作內(nèi)存、主內(nèi)存三者來(lái)交互,其中工作內(nèi)存可以類(lèi)比計(jì)算的高速緩存,不過(guò)線程間工作內(nèi)存是互相獨(dú)立的;主內(nèi)存類(lèi)比計(jì)算機(jī)的主內(nèi)存,線程間變量值傳遞主要是通過(guò)主內(nèi)存來(lái)完成的。同時(shí)JMM也有優(yōu)化代碼執(zhí)行順序的指令重排序。簡(jiǎn)單的說(shuō)就是代碼的編寫(xiě)順序不一定就是代碼的執(zhí)行順序。
2、JMM與JVM的區(qū)分
Java內(nèi)存模型看上去和Java內(nèi)存結(jié)構(gòu)(JVM內(nèi)存結(jié)構(gòu))差不多,很多人會(huì)誤以為兩者是一回事兒,這也就導(dǎo)致面試過(guò)程中經(jīng)常答非所為。
Java堆和方法區(qū)的區(qū)域是多個(gè)線程共享的數(shù)據(jù)區(qū)域。也就是說(shuō),多個(gè)線程可能可以操作保存在堆或者方法區(qū)中的同一個(gè)數(shù)據(jù)。這也就是我們常說(shuō)的“Java的線程間通過(guò)共享內(nèi)存進(jìn)行通信”。
Java內(nèi)存模型是根據(jù)英文Java Memory Model(JMM)翻譯過(guò)來(lái)的。其實(shí)JMM并不像JVM內(nèi)存結(jié)構(gòu)一樣是真實(shí)存在的。他只是一個(gè)抽象的概念。JSR-133: Java Memory Model and Thread Specification中描述了,JMM是和多線程相關(guān)的,他描述了一組規(guī)則或規(guī)范,這個(gè)規(guī)范定義了一個(gè)線程對(duì)共享變量的寫(xiě)入時(shí)對(duì)另一個(gè)線程是可見(jiàn)的。
那么,簡(jiǎn)單總結(jié)下,Java的多線程之間是通過(guò)共享內(nèi)存進(jìn)行通信的,而由于采用共享內(nèi)存進(jìn)行通信,在通信過(guò)程中會(huì)存在一系列如可見(jiàn)性、原子性、順序性等問(wèn)題,而JMM就是圍繞著多線程通信以及與其相關(guān)的一系列特性而建立的模型。JMM定義了一些語(yǔ)法集,這些語(yǔ)法集映射到Java語(yǔ)言中就是volatile、synchronized等關(guān)鍵字。
關(guān)于java中內(nèi)存模型的作用是什么問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。