最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

實(shí)例講解Java并發(fā)編程之變量

 更新時(shí)間:2015年04月13日 10:57:10   投稿:junjie  
這篇文章主要介紹了實(shí)例講解Java并發(fā)編程之變量,本文講解了編寫(xiě)線程安全需要關(guān)心的共享變量和可變變量,需要的朋友可以參考下

編寫(xiě)線程安全需要關(guān)心的:

1.共享的變量
2.可變的變量

共享意味著多個(gè)線程可以同時(shí)訪問(wèn),可變意味著其值在生命周期可以改變。
例如以下count 變量:

復(fù)制代碼 代碼如下:

//線程不安全的類
public class UnsafeCount {
    private int count = 0;    //該變量是共享的
    public void increase() {    //這里沒(méi)有同步機(jī)制,多個(gè)線程可以同時(shí)訪問(wèn)
        count++;    //該變量是可變的
    }
    public int getCount() {
        return count;
    }
}

有4種方式可以修復(fù)這個(gè)問(wèn)題:

1.不在線程中共享該狀態(tài)變量,可以將變量封裝到方法中(無(wú)狀態(tài)的對(duì)象一定是線程安全的);因?yàn)榉椒ㄖ凶兞渴敲總€(gè)線程獨(dú)占的,不和其它線程共享。比如:

復(fù)制代碼 代碼如下:

public int add(int count){
return ++count;//這里也可以說(shuō)無(wú)狀態(tài)的對(duì)象一定是線程安全的
}

2.將狀態(tài)變量修改為不可變的變量。
復(fù)制代碼 代碼如下:

private final  int count = 0;

3.在訪問(wèn)狀態(tài)變量使用同步策略。
復(fù)制代碼 代碼如下:

public synchronized  void increase() {
count++;
}

4.使用原子變量類。
復(fù)制代碼 代碼如下:

 private AtomicInteger count;
 public void increase() {
  count.getAndAdd(1);
 }

相關(guān)文章

  • Java實(shí)現(xiàn)單例模式之餓漢式、懶漢式、枚舉式

    Java實(shí)現(xiàn)單例模式之餓漢式、懶漢式、枚舉式

    本篇文章主要介紹了Java實(shí)現(xiàn)單例的3種普遍的模式,餓漢式、懶漢式、枚舉式。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2016-10-10
  • java中類和對(duì)象的知識(shí)點(diǎn)總結(jié)

    java中類和對(duì)象的知識(shí)點(diǎn)總結(jié)

    在本篇文章里小編給大家整理了一篇關(guān)于java中類和對(duì)象的知識(shí)點(diǎn)總結(jié),有需要的朋友們可以學(xué)習(xí)下。
    2020-12-12
  • 如何在Java中獲取當(dāng)前年份(實(shí)例代碼)

    如何在Java中獲取當(dāng)前年份(實(shí)例代碼)

    在Java語(yǔ)言中獲取當(dāng)前年份有幾種方法:使用java.util包下的Calendar類,使用java.time包下的LocalDate類或者使用java.text包下的SimpleDateFormat類,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2023-11-11
  • Mapper.xml中查詢返回帶有List屬性的實(shí)體類結(jié)果問(wèn)題

    Mapper.xml中查詢返回帶有List屬性的實(shí)體類結(jié)果問(wèn)題

    這篇文章主要介紹了Mapper.xml中查詢返回帶有List屬性的實(shí)體類結(jié)果問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Java異步調(diào)用轉(zhuǎn)同步的方法

    Java異步調(diào)用轉(zhuǎn)同步的方法

    這篇文章主要介紹了Java異步調(diào)用轉(zhuǎn)同步的方法,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-12-12
  • Mybatis兩種不同批量插入方式的區(qū)別

    Mybatis兩種不同批量插入方式的區(qū)別

    隨著業(yè)務(wù)需要,有時(shí)我們需要將數(shù)據(jù)批量添加到數(shù)據(jù)庫(kù),mybatis提供了將list集合循環(huán)添加到數(shù)據(jù)庫(kù)的方法,這篇文章主要給大家介紹了關(guān)于Mybatis兩種不同批量插入方式的區(qū)別,需要的朋友可以參考下
    2021-09-09
  • Spring之詳解bean的實(shí)例化

    Spring之詳解bean的實(shí)例化

    這篇文章主要介紹了Spring之詳解bean的實(shí)例化,文章內(nèi)容詳細(xì),簡(jiǎn)單易懂,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2023-01-01
  • java中堆和棧的區(qū)別分析

    java中堆和棧的區(qū)別分析

    這篇文章主要介紹了java中堆和棧的區(qū)別,分析了Java中堆和棧的原理及使用時(shí)的注意事項(xiàng),需要的朋友可以參考下
    2014-09-09
  • Java 獲取當(dāng)前系統(tǒng)時(shí)間的三種方法

    Java 獲取當(dāng)前系統(tǒng)時(shí)間的三種方法

    這篇文章主要介紹了Java 獲取當(dāng)前系統(tǒng)時(shí)間的三種方法,幫助大家利用Java處理時(shí)間,感興趣的朋友可以了解下
    2020-10-10
  • Java中Bean轉(zhuǎn)Map問(wèn)題歸納總結(jié)

    Java中Bean轉(zhuǎn)Map問(wèn)題歸納總結(jié)

    Java Bean轉(zhuǎn)Map的坑很多,最常見(jiàn)的就是類型丟失和屬性名解析錯(cuò)誤的問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于Java中Bean轉(zhuǎn)Map問(wèn)題歸納總結(jié)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06

最新評(píng)論

建阳市| 静宁县| 库车县| 荔波县| 昭觉县| 大安市| 蓝山县| 永嘉县| 岗巴县| 沁水县| 鄱阳县| 武定县| 海口市| 泸溪县| 伊宁市| 西藏| 肥乡县| 温州市| 滕州市| 桂阳县| 双辽市| 容城县| 军事| 若尔盖县| 治多县| 富顺县| 定陶县| 湘潭市| 金华市| 普宁市| 新泰市| 剑河县| 峨边| 修武县| 桦甸市| 邵东县| 铜鼓县| 双辽市| 莱州市| 恩平市| 曲阳县|