<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 禮物 閱讀(729) 評論(0)  編輯  收藏

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

    網站導航:
     
    主站蜘蛛池模板: 欧洲美熟女乱又伦免费视频| 免费黄色电影在线观看| 97无码免费人妻超级碰碰碰碰| 久久亚洲私人国产精品| 日韩视频免费在线观看| 亚洲国产精品国自产拍AV| 两性色午夜视频免费播放| 亚洲色欲久久久综合网东京热| a在线视频免费观看在线视频三区 a毛片成人免费全部播放 | 午夜男人一级毛片免费| 亚洲另类自拍丝袜第五页| 日本免费一区二区三区最新vr| 黄色a级片免费看| 亚洲日韩中文字幕在线播放| 91视频免费观看高清观看完整| 亚洲AV无码精品无码麻豆| 久久久久久毛片免费播放| 亚洲免费二区三区| 老司机永久免费网站在线观看| 特级av毛片免费观看| 久久久青草青青亚洲国产免观| 99在线视频免费| 亚洲人成色77777在线观看| 亚洲国产精品一区二区九九| 久久久受www免费人成| 中文字幕亚洲精品| 免费观看的a级毛片的网站| 亚洲免费一区二区| 亚洲第一永久在线观看| 免费观看美女裸体网站| 最近更新免费中文字幕大全| 精品亚洲A∨无码一区二区三区| 成人片黄网站色大片免费| 一级毛片无遮挡免费全部| 久久亚洲AV成人无码电影| 午夜毛片不卡高清免费| 国产99久久久国产精免费 | 免费观看的a级毛片的网站| japanese色国产在线看免费| 亚洲日本香蕉视频| 九月婷婷亚洲综合在线|