<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    方偉的博客
    j2ee技術、網絡、web等,同名的人真多,我的QQ是20025404
    posts - 21,comments - 14,trackbacks - 0
    以前一直沒在意,一直以為volatile修飾了就高枕無憂了,但其實不然,最簡單的一個場景:
    public class Counter {
     
        public volatile static int count = 0;
     
        public static void inc() {
     
            //這里延遲1毫秒,使得結果明顯
            try {
                Thread.sleep(1);
            } catch (InterruptedException e) {
            }
     
            count++;
        }
     
        public static void main(String[] args) {
     
            //同時啟動1000個線程,去進行i++計算,看看實際結果
     
            for (int i = 0; i < 1000; i++) {
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        Counter.inc();
                    }
                }).start();
            }
     
            //這里每次運行的值都有可能不同,可能為1000
            System.out.println("運行結果:Counter.count=" + Counter.count);
        }
    }

     這里運行結果依然不是期望的1000,主要原因簡單解釋如下:
     

    對于volatile修飾的變量,jvm虛擬機只是保證從主內存加載到線程工作內存的值是最新的

    例如假如線程1,線程2 在進行read,load 操作中,發現主內存中count的值都是5,那么都會加載這個最新的值

    在線程1堆count進行修改之后,會write到主內存中,主內存中的count變量就會變為6

    線程2由于已經進行read,load操作,在進行運算之后,也會更新主內存count的變量值為6

    導致兩個線程及時用volatile關鍵字修改之后,還是會存在并發的情況。

    posted on 2013-05-30 15:26 方偉的博客 閱讀(314) 評論(0)  編輯  收藏 所屬分類: J2EE相關

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 曰批全过程免费视频免费看 | 男女交性无遮挡免费视频| 99爱在线观看免费完整版| 在线观看亚洲精品福利片| 亚洲第一成年男人的天堂| 中文字幕免费观看全部电影| 亚洲成A人片在线观看无码3D | 国产亚洲精品国产福利在线观看| 女人18毛片水最多免费观看| 亚洲欧美国产欧美色欲| 成人免费视频国产| 看Aⅴ免费毛片手机播放| 免费在线精品视频| 国产精品免费一区二区三区| 亚洲色爱图小说专区| 中文字幕av免费专区| 亚洲不卡中文字幕无码| 99精品视频免费在线观看| 亚洲国产成人久久| 西西大胆无码视频免费| 亚洲AV日韩AV永久无码色欲 | 免费看一级毛片在线观看精品视频| 免费a级毛片永久免费| 一日本道a高清免费播放 | 久久亚洲国产视频| 免费观看国产网址你懂的| 国产v亚洲v天堂a无| 国产成人免费片在线观看| 一级毛片视频免费| 亚洲五月激情综合图片区| 黄色网址免费观看| 久久亚洲AV成人无码国产最大| 亚洲精品国精品久久99热| 99ee6热久久免费精品6| 最新国产成人亚洲精品影院| 四虎永久在线精品免费观看地址| 一级免费黄色大片| 亚洲综合亚洲国产尤物| 国产午夜影视大全免费观看| 久久精品成人免费看| 在线观看亚洲AV日韩A∨|