隨筆 - 35  文章 - 21  trackbacks - 0
          <2010年6月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

            transient:

            java有個特點就是序列化,簡單地來說就是可以將這個類存儲在物理空間(當然還是以文件的形式存在),那么當你從本地還原這個文件時,你可以將它轉換為它本身。這可以極大地方便網絡上的一些操作,但同時,因為涉及到安全問題,所以并不希望把類里面所有的東西都能存儲(因為那樣,別人可以通過序列化知道類里面的內容),那么我們就可以用上transient這個關鍵字,它的意思是臨時的,即不會隨類一起序列化到本地,所以當還原后,這個關鍵字定義的變量也就不再存在。

            volatile:

            Volatile 修飾的成員變量在每次被線程訪問時,都強迫從共享內存中重讀該成員變量的值。而且,當成員變量發生變化時,強迫線程將變化值回寫到共享內存。這樣在任何時刻,兩個不同的線程總是看到某個成員變量的同一個值。

            Java 語言規范中指出:為了獲得最佳速度,允許線程保存共享成員變量的私有拷貝,而且只當線程進入或者離開同步代碼塊時才與共享成員變量的原始值對比。

            這樣當多個線程同時與某個對象交互時,就必須要注意到要讓線程及時的得到共享成員變量的變化。

            而volatile關鍵字就是提示VM:對于這個成員變量不能保存它的私有拷貝,而應直接與共享成員變量交互。

            使用建議:在兩個或者更多的線程訪問的成員變量上使用volatile。當要訪問的變量已在synchronized代碼塊中,或者為常量時,不必使用。

            由于使用volatile屏蔽掉了VM中必要的代碼優化,所以在效率上比較低,因此一定在必要時才使用此關鍵字。

          posted on 2010-06-14 23:03 lincode 閱讀(230) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 南宁市| 尼勒克县| 河北省| 杂多县| 六枝特区| 油尖旺区| 来凤县| 嘉荫县| 彝良县| 青浦区| 庆云县| 阿图什市| 永清县| 五常市| 英山县| 醴陵市| 阳东县| 武功县| 循化| 阿拉善右旗| 开江县| 贵定县| 汶川县| 黎川县| 和龙市| 双峰县| 莱州市| 乌拉特前旗| 清水河县| 阿拉尔市| 犍为县| 瑞安市| 綦江县| 宁河县| 井冈山市| 伊吾县| 偏关县| 栖霞市| 安仁县| 彝良县| 临洮县|