您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關java中final域的內存語義是什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
1、說明
對于final域的內存語義,編譯器和處理器要遵守兩個重排序規則(內部實現也是使用內存屏障):
寫final域的重排序規則:在構造函數內對一個final域的寫入,與隨后把這個被構造對象的引用賦值給一個引用變量,這兩個操作之間不能重排序。
讀final域的重排序規則:初次讀一個包含final域的對象的引用,與隨后初次讀這個final域,這兩個操作之間不能重排序。
2、實例
public class FinalExample { int i;//普通域 final int j;//final域 static FinalExample obj; public FinalExample () { i = 1;//寫普通域。對普通域的寫操作【可能會】被重排序到構造函數之外 j = 2;//寫final域。對final域的寫操作【不會】被重排序到構造函數之外 } // 寫線程A執行 public static void writer () {? obj = new FinalExample (); } // 讀線程B執行 public static void reader () {? FinalExample object = obj;//讀對象引用 int a = object.i;//讀普通域。可能會看到結果為0(由于i=1可能被重排序到構造函數外,此時y還沒有被初始化) int b = object.j;//讀final域。保證能夠看到結果為2 } }
1.SpringMVC,Spring Web MVC是一種基于Java的實現了Web MVC設計模式的請求驅動類型的輕量級Web框架。2.Shiro,Apache Shiro是Java的一個安全框架。3.Mybatis,MyBatis 是支持普通 SQL查詢,存儲過程和高級映射的優秀持久層框架。4.Dubbo,Dubbo是一個分布式服務框架。5.Maven,Maven是個項目管理和構建自動化工具。6.RabbitMQ,RabbitMQ是用Erlang實現的一個高并發高可靠AMQP消息隊列服務器。7.Ehcache,EhCache 是一個純Java的進程內緩存框架。
關于“java中final域的內存語義是什么”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。