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

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

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

    Terry.Li-彬

    虛其心,可解天下之問;專其心,可治天下之學;靜其心,可悟天下之理;恒其心,可成天下之業。

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      143 隨筆 :: 344 文章 :: 130 評論 :: 0 Trackbacks

    AtomicInteger,一個提供原子操作的Integer的類。在Java語言中,++i和i++操作并不是線程安全的,在使用的時候,不可避免的會用到synchronized關鍵字。而AtomicInteger則通過一種線程安全的加減操作接口。

    來看AtomicInteger提供的接口。

    //獲取當前的值

    public final int get()

    //取當前的值,并設置新的值

    ?public final int getAndSet(int newValue)

    //獲取當前的值,并自增

    ?public final int getAndIncrement()

    //獲取當前的值,并自減

    public final int getAndDecrement()

    //獲取當前的值,并加上預期的值

    public final int getAndAdd(int delta)

    ... ...


    下面是一個對比測試,我們寫一個synchronized的方法和一個AtomicInteger的方法來進行測試,直觀的感受下性能上的差異

    [java] ? view plain copy
    1. package ?zl.study.concurrency;??
    2. import ?java.util.concurrent.atomic.AtomicInteger;??
    3. public ? class ?AtomicIntegerCompareTest?{??
    4. ????private?int?value;??
    5. ??????
    6. ????public?AtomicIntegerCompareTest(int?value){??
    7. ????????this.value?=?value;??
    8. ????}??
    9. ??????
    10. ????public?synchronized?int?increase(){??
    11. ????????return?value++;??
    12. ????}??
    13. ??????
    14. ????public?static?void?main(String?args[]){??
    15. ????????long?start?=?System.currentTimeMillis();??
    16. ??????????
    17. ????????AtomicIntegerCompareTest?test?=?new?AtomicIntegerCompareTest(0);??
    18. ????????for(?int?i=0;i<?1000000;i++){??
    19. ????????????test.increase();??
    20. ????????}??
    21. ????????long?end?=?System.currentTimeMillis();??
    22. ????????System.out.println("time?elapse:"+(end?-start));??
    23. ??????????
    24. ????????long?start1?=?System.currentTimeMillis();??
    25. ??????????
    26. ????????AtomicInteger?atomic?=?new?AtomicInteger(0);??
    27. ??????????
    28. ????????for(?int?i=0;i<?1000000;i++){??
    29. ????????????atomic.incrementAndGet();??
    30. ????????}??
    31. ????????long?end1?=?System.currentTimeMillis();??
    32. ????????System.out.println("time?elapse:"+(end1?-start1)?);??
    33. ??????????
    34. ??????????
    35. ????}??
    36. }??

    結果

    time elapse:31
    time elapse:16
    由此不難看出,通過JNI本地的CAS性能遠超synchronized關鍵字

    ?

    Reference

    http://stackoverflow.com/questions/2443239/java-atomicinteger-what-are-the-differences-between-compareandset-and-weakcompar

    posted on 2013-01-31 17:15 禮物 閱讀(728) 評論(0)  編輯  收藏

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

    網站導航:
     
    主站蜘蛛池模板: 成人黄网站片免费视频| 成人伊人亚洲人综合网站222| 国产亚洲无线码一区二区| 麻豆69堂免费视频| 国产偷窥女洗浴在线观看亚洲 | 国产青草视频在线观看免费影院| 亚洲另类春色国产精品| 欧美日韩国产免费一区二区三区| 亚洲AV无码国产精品色| 无码一区二区三区免费视频| 亚洲人成网站色7799| 国产免费观看视频| 一级看片免费视频囗交| 亚洲AV无码一区二区三区系列 | 亚洲国产日韩精品| 国产又大又粗又硬又长免费 | 久久久久国产精品免费看| 亚洲日韩在线视频| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 99亚洲乱人伦aⅴ精品| 免费一级毛片不卡不收费| 成av免费大片黄在线观看| 亚洲丝袜美腿视频| 毛片免费视频在线观看| 久久精品国产亚洲av天美18| 亚洲日韩中文在线精品第一| 可以免费观看的毛片| 亚洲一区二区三区在线网站| 国产aa免费视频| 免费国产午夜高清在线视频| 亚洲深深色噜噜狠狠网站| 国产精品亚洲αv天堂无码| 最近2019中文字幕免费直播| 国产成人精品久久亚洲高清不卡| 久久影视国产亚洲| 午夜国产精品免费观看| 特黄aa级毛片免费视频播放| 91亚洲国产成人精品下载| 国产免费观看青青草原网站| 久久久久免费看黄a级试看| 国产亚洲人成在线播放|