隨筆 - 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
          主站蜘蛛池模板: 二连浩特市| 汉寿县| 贡觉县| 孟村| 岐山县| 上犹县| 台前县| 惠水县| 兴仁县| 读书| 龙南县| 常山县| 南昌市| 娄底市| 平度市| 宣恩县| 彭泽县| 肥乡县| 泊头市| 佛冈县| 灌云县| 陇川县| 田阳县| 西丰县| 佛坪县| 奉贤区| 新津县| 敖汉旗| 华容县| 雷波县| 马公市| 汤原县| 巩义市| 平武县| 都匀市| 白银市| 平定县| 酉阳| 阿瓦提县| 西乌珠穆沁旗| 泸定县|