最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java并發(fā)編程之原子變量與非阻塞同步機(jī)制

 更新時(shí)間:2015年04月14日 09:12:39   投稿:junjie  
這篇文章主要介紹了Java并發(fā)編程之原子變量與非阻塞同步機(jī)制,本文講解了非阻塞算法、悲觀技術(shù)、樂(lè)觀技術(shù)、CAS操作、原子變量、性能比較:鎖與原子變量等內(nèi)容,需要的朋友可以參考下

1.非阻塞算法

非阻塞算法屬于并發(fā)算法,它們可以安全地派生它們的線程,不通過(guò)鎖定派生,而是通過(guò)低級(jí)的原子性的硬件原生形式 —— 例如比較和交換。非阻塞算法的設(shè)計(jì)與實(shí)現(xiàn)極為困難,但是它們能夠提供更好的吞吐率,對(duì)生存問(wèn)題(例如死鎖和優(yōu)先級(jí)反轉(zhuǎn))也能提供更好的防御。使用底層的原子化機(jī)器指令取代鎖,比如比較并交換(CAS,compare-and-swap).

2.悲觀技術(shù)

獨(dú)占鎖是一種悲觀的技術(shù).它假設(shè)最壞的情況發(fā)生(如果不加鎖,其它線程會(huì)破壞對(duì)象狀態(tài)),即使沒(méi)有發(fā)生最壞的情況,仍然用鎖保護(hù)對(duì)象狀態(tài).

3.樂(lè)觀技術(shù)

依賴沖突監(jiān)測(cè).先更新,如果監(jiān)測(cè)發(fā)生沖突發(fā)生,則放棄更新后重試,否則更新成功.現(xiàn)在處理器都有原子化的讀-改-寫指令,比如比較并交換(CAS,compare-and-swap).

4.CAS操作

CAS有3個(gè)操作數(shù),內(nèi)存值V,舊的預(yù)期值A(chǔ),要修改的新值B。當(dāng)且僅當(dāng)預(yù)期值A(chǔ)和內(nèi)存值V相同時(shí),將內(nèi)存值V修改為B,否則什么都不做。CAS典型使用模式是:首先從V中讀取A,并根據(jù)A計(jì)算新值B,然后再通過(guò)CAS以原子方式將V中的值由A變成B(只要在這期間沒(méi)有任何線程將V的值修改為其他值)。

清單 3. 說(shuō)明比較并交換的行為(而不是性能)的代碼

復(fù)制代碼 代碼如下:

public class SimulatedCAS {
     private int value;

     public synchronized int getValue() { return value; }

    public synchronized int compareAndSwap(int expectedValue, int newValue) {
         int oldValue = value;
         if (value == expectedValue)
             value = newValue;
         return oldValue;
     }
}


清單 4. 使用比較并交換實(shí)現(xiàn)計(jì)數(shù)器
復(fù)制代碼 代碼如下:

public class CasCounter {
    private SimulatedCAS value;
    public int getValue() {
        return value.getValue();
    }
    public int increment() {
        int oldValue = value.getValue();
        while (value.compareAndSwap(oldValue, oldValue + 1) != oldValue)
            oldValue = value.getValue();
        return oldValue + 1;
    }
}

5.原子變量

原子變量支持不用鎖保護(hù)就能原子性更新操作,其底層用CAS實(shí)現(xiàn)。共有12個(gè)原子變量,可分為4組:標(biāo)量類、更新器類、數(shù)組類以及復(fù)合變量類。最常用的原子變量就是標(biāo)量類:AtomicInteger、AtomicLong、AtomicBoolean以及AtomicReference。所有類型都支持CAS。

6.性能比較:鎖與原子變量

在中低程度的競(jìng)爭(zhēng)下,原子變量能提供很高的可伸縮性,原子變量性能超過(guò)鎖;而在高強(qiáng)度的競(jìng)爭(zhēng)下,鎖能夠更有效地避免競(jìng)爭(zhēng),鎖的性能將超過(guò)原子變量的性能。但在更真實(shí)的實(shí)際情況中,原子變量的性能將超過(guò)鎖的性能。

相關(guān)文章

最新評(píng)論

镇康县| 颍上县| 高邮市| 潼南县| 唐河县| 开平市| 苍南县| 甘德县| 门头沟区| 十堰市| 库伦旗| 广西| 乳源| 麻阳| 大厂| 湘潭市| 涿州市| 监利县| 襄樊市| 惠州市| 固始县| 武威市| 大竹县| 嘉义县| 绍兴市| 林西县| 曲阜市| 元阳县| 收藏| 广灵县| 陵水| 武清区| 文水县| 兰溪市| 丁青县| 贞丰县| 友谊县| 锡林郭勒盟| 宜宾市| 大渡口区| 雷波县|