這篇文章將為大家詳細講解有關(guān)java中final域的內(nèi)存語義是什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計、網(wǎng)站制作、大方網(wǎng)絡(luò)推廣、微信平臺小程序開發(fā)、大方網(wǎng)絡(luò)營銷、大方企業(yè)策劃、大方品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)公司為所有大學生創(chuàng)業(yè)者提供大方建站搭建服務(wù),24小時服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com
1、說明
對于final域的內(nèi)存語義,編譯器和處理器要遵守兩個重排序規(guī)則(內(nèi)部實現(xiàn)也是使用內(nèi)存屏障):
寫final域的重排序規(guī)則:在構(gòu)造函數(shù)內(nèi)對一個final域的寫入,與隨后把這個被構(gòu)造對象的引用賦值給一個引用變量,這兩個操作之間不能重排序。
讀final域的重排序規(guī)則:初次讀一個包含final域的對象的引用,與隨后初次讀這個final域,這兩個操作之間不能重排序。
2、實例
public class FinalExample {
int i;//普通域
final int j;//final域
static FinalExample obj;
public FinalExample () {
i = 1;//寫普通域。對普通域的寫操作【可能會】被重排序到構(gòu)造函數(shù)之外
j = 2;//寫final域。對final域的寫操作【不會】被重排序到構(gòu)造函數(shù)之外
}
// 寫線程A執(zhí)行
public static void writer () {?
obj = new FinalExample ();
}
// 讀線程B執(zhí)行
public static void reader () {?
FinalExample object = obj;//讀對象引用
int a = object.i;//讀普通域。可能會看到結(jié)果為0(由于i=1可能被重排序到構(gòu)造函數(shù)外,此時y還沒有被初始化)
int b = object.j;//讀final域。保證能夠看到結(jié)果為2
}
}
常用的java框架有哪些
1.SpringMVC,Spring Web MVC是一種基于Java的實現(xiàn)了Web MVC設(shè)計模式的請求驅(qū)動類型的輕量級Web框架。2.Shiro,Apache Shiro是Java的一個安全框架。3.Mybatis,MyBatis 是支持普通 SQL查詢,存儲過程和高級映射的優(yōu)秀持久層框架。4.Dubbo,Dubbo是一個分布式服務(wù)框架。5.Maven,Maven是個項目管理和構(gòu)建自動化工具。6.RabbitMQ,RabbitMQ是用Erlang實現(xiàn)的一個高并發(fā)高可靠AMQP消息隊列服務(wù)器。7.Ehcache,EhCache 是一個純Java的進程內(nèi)緩存框架。
關(guān)于“java中final域的內(nèi)存語義是什么”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
文章標題:java中final域的內(nèi)存語義是什么
文章起源:
http://www.ef60e0e.cn/article/pjhooh.html