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

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

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

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

          時,不必使用。 由于使用volatile屏蔽掉了VM中必要的代碼優化,所以在效率上比較低,因此一定在必要時才使用此關鍵字。 就跟C中的一樣 禁止編譯器進行優化~~~~
          posted on 2011-12-28 13:58 RoyPayne 閱讀(230) 評論(0)  編輯  收藏 所屬分類: java并發
          主站蜘蛛池模板: 远安县| 富民县| 庆阳市| 徐汇区| 邻水| 新安县| 怀化市| 绿春县| 娱乐| 玉树县| 文安县| 丰原市| 昌图县| 外汇| 饶阳县| 临洮县| 泸定县| 龙山县| 江都市| 博湖县| 乌拉特后旗| 南丰县| 延寿县| 哈巴河县| 进贤县| 古交市| 兴宁市| 容城县| 渭南市| 许昌县| 石屏县| 通州市| 惠来县| 玉屏| 鄂伦春自治旗| 那曲县| 哈巴河县| 临沂市| 定州市| 额济纳旗| 广水市|