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

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

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

    silvermyth

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      1 隨筆 :: 12 文章 :: 1 評(píng)論 :: 0 Trackbacks
     
        我們知道,在Java中設(shè)置變量值的操作,除了long和double類型的變量外都是原子操作,也就是說(shuō),對(duì)于變量值的簡(jiǎn)單讀寫(xiě)操作沒(méi)有必要進(jìn)行同步。這在JVM 1.2之前,Java的內(nèi)存模型實(shí)現(xiàn)總是從主存讀取變量,是不需要進(jìn)行特別的注意的。而隨著JVM的成熟和優(yōu)化,現(xiàn)在在多線程環(huán)境下volatile關(guān)鍵字的使用變得非常重要。在當(dāng)前的Java內(nèi)存模型下,線程可以把變量保存在本地內(nèi)存(比如機(jī)器的寄存器)中,而不是直接在主存中進(jìn)行讀寫(xiě)。這就可能造成一個(gè)線程在主存中修改了一個(gè)變量的值,而另外一個(gè)線程還繼續(xù)使用它在寄存器中的變量值的拷貝,造成數(shù)據(jù)的不一致。把變量聲明為volatile(不穩(wěn)定的),這就指示JVM,這個(gè)變量是不穩(wěn)定的,每次使用它都到主存中進(jìn)行讀取。一般說(shuō)來(lái),多任務(wù)環(huán)境下各任務(wù)間共享的標(biāo)志都應(yīng)該加volatile修飾。
        在一些情況下,使用volatile可以達(dá)到同步的目的,在某種程度上相當(dāng)于synchronized關(guān)鍵字;為什么說(shuō)是一定程度上呢,這就要從synchronized同步關(guān)鍵字說(shuō)起了,synchronized在Java語(yǔ)言中可以實(shí)現(xiàn)兩個(gè)功能,互斥性和可見(jiàn)性。互斥性是指任意時(shí)刻只能有一個(gè)線程持有特定的鎖,從而可以實(shí)現(xiàn)對(duì)共享數(shù)據(jù)的協(xié)調(diào)訪問(wèn);而可見(jiàn)性說(shuō)的是,任意線程修改的共享數(shù)據(jù)對(duì)于其他線程必須是可見(jiàn)的,也就是說(shuō)不允許其他線程拿到舊的數(shù)據(jù)。而volatile關(guān)鍵字只能實(shí)現(xiàn)可見(jiàn)性,也就是說(shuō)用volatile修飾的變量的修改對(duì)于其他線程是可見(jiàn)的,如果該值被修改,其他線程可以立即得到新值。下面的代碼簡(jiǎn)單展示了volatile的一個(gè)簡(jiǎn)單應(yīng)用,線程的退出:
        
     1public class Monitor implements Runnable {
     2
     3    private volatile Thread blinker;
     4    boolean isRunning = false;
     5
     6
     7    @Override
     8    public void run() {
     9
    10        Thread thisThread = Thread.currentThread();
    11        while (blinker == thisThread) {
    12            try {
    13                thisThread.sleep(50);
    14            }
     catch (InterruptedException e) {
    15            }

    16            //To do you task
    17        }

    18
    19    }

    20
    21
    22    public void startMonitor() {
    23        blinker = new Thread(this);
    24        blinker.start();
    25    }

    26
    27    public void stopMonitor() {
    28        blinker = null;
    29    }

    30
    31}





     
    posted on 2011-06-14 22:53 Gavin Li 閱讀(209) 評(píng)論(0)  編輯  收藏 所屬分類: Java

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 全部在线播放免费毛片| 亚洲视频免费在线观看| 中文字幕亚洲不卡在线亚瑟| 在线毛片片免费观看| 亚洲综合丁香婷婷六月香| www国产亚洲精品久久久| 国产日韩一区二区三免费高清| 亚洲国产精品综合久久久| 亚洲国产日韩在线观频| 99re免费99re在线视频手机版| 亚洲AV无码之国产精品| 亚洲AV无码第一区二区三区| 24小时日本在线www免费的| 精品国产污污免费网站入口在线 | 中文字幕免费在线看线人动作大片 | 日韩视频在线观看免费| 亚洲最大无码中文字幕| 亚洲日韩小电影在线观看| 国产成人免费爽爽爽视频| 亚美影视免费在线观看 | www免费插插视频| 67194在线午夜亚洲| 久久久久久a亚洲欧洲aⅴ| 日本免费电影一区| **真实毛片免费观看 | 欧美a级在线现免费观看| 在线看片免费人成视频福利| 色屁屁在线观看视频免费| 亚洲成av人片不卡无码| 亚洲国产精品特色大片观看完整版| 午夜色a大片在线观看免费| 最新黄色免费网站| 成在线人视频免费视频| 国产精品亚洲天堂| 456亚洲人成在线播放网站| 中文字幕亚洲免费无线观看日本| 亚洲国产精品综合久久一线| 暖暖免费高清日本一区二区三区| 巨波霸乳在线永久免费视频 | 1000部拍拍拍18勿入免费视频下载| yellow视频免费在线观看|