<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)  編輯  收藏

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

    網站導航:
     
    主站蜘蛛池模板: 亚洲最大AV网站在线观看| 亚洲日本香蕉视频观看视频| 青柠影视在线观看免费高清| 亚洲国产美女精品久久| 国产午夜无码视频免费网站| aa级女人大片喷水视频免费| 亚洲婷婷综合色高清在线| 免费在线一级毛片| www视频免费看| 一级人做人a爰免费视频| 亚洲成人在线免费观看| 亚洲国产成人久久笫一页| h视频在线免费看| 男女拍拍拍免费视频网站| wwwxxx亚洲| 国产精品亚洲一区二区三区在线| 成年女人色毛片免费看| 无码人妻精品中文字幕免费 | 亚洲а∨天堂久久精品9966| 亚洲一本大道无码av天堂| 国产卡一卡二卡三免费入口| 两个人看的www免费高清| 亚洲精品无码mⅴ在线观看| 亚洲卡一卡2卡三卡4卡无卡三| 人人狠狠综合久久亚洲高清| 手机在线看永久av片免费| 国产拍拍拍无码视频免费| 男女猛烈无遮掩视频免费软件| 国产午夜亚洲精品| 亚洲性猛交xx乱| 亚洲成熟xxxxx电影| 亚洲中文字幕第一页在线| 国产成人免费a在线资源| 一个人免费观看在线视频www| AAA日本高清在线播放免费观看| 福利片免费一区二区三区| 亚洲欧洲专线一区| 亚洲人成在线中文字幕| 亚洲麻豆精品果冻传媒| 亚洲成a人片在线观看中文动漫| 亚洲免费视频一区二区三区|