隨筆-59  評論-31  文章-0  trackbacks-0
                Volatile修飾的成員變量在每次被線程訪問時,都強迫從共享內存中重讀該成員變量的值。而且,當成員變量發生變化時,強迫線程將變化值回寫到共享內存。這樣在任何時刻,兩

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

          共享成員變量的原始值對比。 這樣當多個線程同時與某個對象交互時,就必須要注意到要讓線程及時的得到共享成員變量的變化。 而volatile關鍵字就是提示VM:對于這個成員變量

          不能保存它的私有拷貝,而應直接與共享成員變量交互。 使用建議:在兩個或者更多的線程訪問的成員變量上使用volatile。當要訪問的變量已在synchronized代碼塊中,或者為常量

          時,不必使用。 由于使用volatile屏蔽掉了VM中必要的代碼優化,所以在效率上比較低,因此一定在必要時才使用此關鍵字。 就跟C中的一樣 禁止編譯器進行優化~~~~
          posted on 2011-12-28 13:58 RoyPayne 閱讀(221) 評論(0)  編輯  收藏 所屬分類: java并發
          主站蜘蛛池模板: 平顺县| 北川| 敦化市| 西乌珠穆沁旗| 沁水县| 桐柏县| 赫章县| 渑池县| 鹤庆县| 新和县| 淳化县| 新乡市| 永安市| 泗水县| 大冶市| 翼城县| 长子县| 玉林市| 五寨县| 安宁市| 广丰县| 贡觉县| 东港市| 乃东县| 长岭县| 河池市| 寻甸| 明光市| 田东县| 正宁县| 天峻县| 三河市| 山阴县| 锦州市| 新巴尔虎右旗| 南陵县| 余干县| 乐亭县| 宁陕县| 万山特区| 德江县|