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

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

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

          public int getCount() {
              return count;
          }
          }

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

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

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

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          收藏夾

          Java

          搜索

          •  

          最新隨筆

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 阿拉善左旗| 文水县| 广州市| 谷城县| 上栗县| 历史| 邢台市| 长沙市| 延庆县| 奉贤区| 老河口市| 辽阳县| 通河县| 涿鹿县| 盖州市| 忻州市| 九台市| 阳原县| 中超| 乌海市| 轮台县| 西充县| 交口县| 太谷县| 阿拉尔市| 犍为县| 东乡县| 库伦旗| 临洮县| 三台县| 五大连池市| 新绛县| 南昌县| 怀仁县| 桃源县| 宣威市| 太白县| 嘉义市| 高邮市| 池州市| 岳阳市|