欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

編寫線程安全需要關(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)文章

  • Mybatis 動(dòng)態(tài)表名+Map參數(shù)傳遞+批量操作詳解

    Mybatis 動(dòng)態(tài)表名+Map參數(shù)傳遞+批量操作詳解

    這篇文章主要介紹了Mybatis 動(dòng)態(tài)表名+Map參數(shù)傳遞+批量操作詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • 基于logback.xml不生效問(wèn)題的解決

    基于logback.xml不生效問(wèn)題的解決

    這篇文章主要介紹了基于logback.xml不生效問(wèn)題的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 一文帶你深入了解Java的數(shù)據(jù)結(jié)構(gòu)

    一文帶你深入了解Java的數(shù)據(jù)結(jié)構(gòu)

    Java工具包提供了強(qiáng)大的數(shù)據(jù)結(jié)構(gòu)。這篇文章主要為大家詳細(xì)介紹了Java數(shù)據(jù)結(jié)構(gòu)中常用的幾種接口和類,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-05-05
  • Java 數(shù)據(jù)結(jié)構(gòu)之堆的概念與應(yīng)用

    Java 數(shù)據(jù)結(jié)構(gòu)之堆的概念與應(yīng)用

    堆是一顆完全二叉樹,在這棵樹中,所有父節(jié)點(diǎn)都滿足大于等于其子節(jié)點(diǎn)的堆叫大根堆,所有父節(jié)點(diǎn)都滿足小于等于其子節(jié)點(diǎn)的堆叫小根堆,堆雖然是一顆樹,但是通常存放在一個(gè)數(shù)組中,父節(jié)點(diǎn)和孩子節(jié)點(diǎn)的父子關(guān)系通過(guò)數(shù)組下標(biāo)來(lái)確定
    2021-10-10
  • Java面向?qū)ο缶幊蹋ǚ庋b/繼承/多態(tài))實(shí)例解析

    Java面向?qū)ο缶幊蹋ǚ庋b/繼承/多態(tài))實(shí)例解析

    這篇文章主要介紹了Java面向?qū)ο缶幊蹋ǚ庋b/繼承/多態(tài))實(shí)例解析的相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • 淺談JAVA如何生成UUID唯一標(biāo)識(shí)

    淺談JAVA如何生成UUID唯一標(biāo)識(shí)

    這篇文章主要介紹了淺談JAVA如何生成UUID唯一標(biāo)識(shí),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 實(shí)例解讀Ajax與servlet交互的方法

    實(shí)例解讀Ajax與servlet交互的方法

    這篇文章主要介紹了Ajax與servlet交互的方法,需要的朋友可以參考下
    2014-07-07
  • 從零搭建SpringBoot+MyBatisPlus快速開發(fā)腳手架

    從零搭建SpringBoot+MyBatisPlus快速開發(fā)腳手架

    這篇文章主要為大家介紹了從零搭建SpringBoot+MyBatisPlus快速開發(fā)腳手架示例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 關(guān)于對(duì)Java正則表達(dá)式"\\"的理解

    關(guān)于對(duì)Java正則表達(dá)式"\\"的理解

    正則表達(dá)式中,\代表轉(zhuǎn)義字符,通常是轉(zhuǎn)義一些特殊字符,下面這篇文章主要給大家介紹了關(guān)于對(duì)Java正則表達(dá)式"\\"的相關(guān)理解,需要的朋友可以參考下
    2022-09-09
  • eclipse配置tomcat10的詳細(xì)步驟總結(jié)

    eclipse配置tomcat10的詳細(xì)步驟總結(jié)

    今天給大家?guī)?lái)的是關(guān)于Java的相關(guān)知識(shí),文章圍繞著eclipse配置tomcat10的詳細(xì)步驟展開,文中有非常詳細(xì)的介紹及圖文示例,需要的朋友可以參考下
    2021-06-06

最新評(píng)論