posts - 93,  comments - 2,  trackbacks - 0
          J2SE 5.0提供了一組atomic class來幫助我們簡化同步處理。基本工作原理是使用了同步synchronized的方法實現了對一個long, integer, 對象的增、減、賦值(更新)操作. 比如對于++運算符AtomicInteger可以將它持有的integer 能夠atomic 地遞增。在需要訪問兩個或兩個以上 atomic變量的程序代碼(或者是對單一的atomic變量執行兩個或兩個以上的操作)通常都需要被synchronize以便兩者的操作能夠被當作是一個atomic的單元。

          java多線程用法-使用AtomicInteger
          下面通過簡單的兩個例子的對比來看一下 AtomicInteger 的強大的功能
          class Counter {
          private volatile int count = 0;

          public synchronized void increment() {
              count++;  //若要線程安全執行執行count++,需要加鎖
          }

          public int getCount() {
              return count;
          }
          }

          class Counter {
              private AtomicInteger count = new AtomicInteger(); 

          public void increment() {
              count.incrementAndGet();
          }
                 //使用AtomicInteger之后,不需要加鎖,也可以實現線程安全。
          public int getCount() {
              return count.get();
          }
          }

          從上面的例子中我們可以看出:使用AtomicInteger是非常的安全的
          那么為什么不使用記數器自加呢,例如count++這樣的,因為這種計數是線程不安全的,高并發訪問時統計會有誤,而AtomicInteger為什么能夠達到多而不亂,處理高并發應付自如呢?
          這是由硬件提供原子操作指令實現的。在非激烈競爭的情況下,開銷更小,速度更快。Java.util.concurrent中實現的原子操作類包括:
          AtomicBoolean、AtomicInteger、AtomicLong、AtomicReference。
          posted on 2015-01-28 16:50 Terry Zou 閱讀(175) 評論(0)  編輯  收藏 所屬分類: Android
          <2015年1月>
          28293031123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          收藏夾

          Java

          搜索

          •  

          最新隨筆

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 炉霍县| 平舆县| 湖北省| 阳春市| 祁连县| 砚山县| 忻城县| 浦江县| 饶平县| 灵石县| 宜川县| 无为县| 娄底市| 额敏县| 柳河县| 巴彦县| 金湖县| 曲沃县| 右玉县| 高阳县| 奇台县| 洞口县| 商城县| 剑河县| 安阳市| 武汉市| 博客| 沅江市| 集安市| 宁明县| 友谊县| 黄石市| 乌恰县| 潮安县| 靖州| 尚义县| 双城市| 柘城县| 蓬安县| 汶川县| 彭州市|