Thread_線程安全

count方法計(jì)算0-10的總和驻债,并輸出當(dāng)前線程名,期望每個(gè)線程都打印出55.

public class MultiThreadDemo_01 {

    public static void main(String[] args){
        Runnable runnable = new Runnable(){
            Count count = new Count();
            @Override
            public void run() {
                count.count();
            }
        };
        for(int i=0;i<5;i++){
            new Thread(runnable).start();
        }
    }
}

class Count{
    int num=0;//全局變量
    public void count(){
        for(int i=0;i<=10;i++){
            num+=i;
        }
        System.out.println(Thread.currentThread().getName()+"==="+num);
    }
}

結(jié)果:只有一個(gè)線程輸出55.為保證所有線程都打印出55

Thread-0===55
Thread-2===110
Thread-4===165
Thread-1===220
Thread-3===275

解決方案1:
全局變量num放在count方法內(nèi)部

class Count{
    public void count(){
        int num=0;//count方法的局部變量
        for(int i=0;i<=10;i++){
            num+=i;
        }
        System.out.println(Thread.currentThread().getName()+"==="+num);
    }
}

解決方案2:
Count count = new Count();放在run方法中柄慰,這時(shí)count引用是線程內(nèi)的局部變量
結(jié)果:所有線程都輸出55.

Thread-0===55
Thread-3===55
Thread-4===55
Thread-1===55
Thread-2===55

解決方案3:每次啟動一個(gè)線程使用不同的線程類嫉到,不推薦。

總結(jié):存在成員變量的類用于多線程時(shí)是不安全的瞎颗,不安全體現(xiàn)在這個(gè)成員變量可能發(fā)生非原子性的操作件甥,而變量定義在方法內(nèi)也就是局部變量是線程安全的,日常開發(fā)中哼拔,通常需要考慮成員變量或者說全局變量在多線程環(huán)境下引有,是否會引發(fā)一些問題。

線程安全與共享資源
允許被多個(gè)線程同時(shí)執(zhí)行的代碼稱作線程安全的代碼倦逐。線程安全的代碼不包含競態(tài)條件譬正。當(dāng)多個(gè)線程同時(shí)更新共享資源時(shí)會引發(fā)競態(tài)條件。因此檬姥,了解Java線程執(zhí)行時(shí)共享了什么資源很重要

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末曾我,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子健民,更是在濱河造成了極大的恐慌抒巢,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荞雏,死亡現(xiàn)場離奇詭異虐秦,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)凤优,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門悦陋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人筑辨,你說我怎么就攤上這事俺驶。” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵暮现,是天一觀的道長还绘。 經(jīng)常有香客問我,道長栖袋,這世上最難降的妖魔是什么拍顷? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮塘幅,結(jié)果婚禮上昔案,老公的妹妹穿的比我還像新娘。我一直安慰自己电媳,他們只是感情好踏揣,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著匾乓,像睡著了一般捞稿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拼缝,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天娱局,我揣著相機(jī)與錄音,去河邊找鬼咧七。 笑死铃辖,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的猪叙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼仁卷,長吁一口氣:“原來是場噩夢啊……” “哼穴翩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起锦积,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤芒帕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后丰介,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體背蟆,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年哮幢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了带膀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,727評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡橙垢,死狀恐怖垛叨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情柜某,我是刑警寧澤嗽元,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布敛纲,位于F島的核電站,受9級特大地震影響剂癌,放射性物質(zhì)發(fā)生泄漏淤翔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一佩谷、第九天 我趴在偏房一處隱蔽的房頂上張望旁壮。 院中可真熱鬧,春花似錦琳要、人聲如沸寡具。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽童叠。三九已至,卻和暖如春课幕,著一層夾襖步出監(jiān)牢的瞬間厦坛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工乍惊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留杜秸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓润绎,卻偏偏與公主長得像撬碟,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子莉撇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法呢蛤,類相關(guān)的語法,內(nèi)部類的語法棍郎,繼承相關(guān)的語法其障,異常的語法,線程的語...
    子非魚_t_閱讀 31,623評論 18 399
  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,139評論 30 470
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,078評論 25 707
  • 有的生命出生于地球涂佃,有的生命出生在外星励翼。 有的生在水里,有的長在地上辜荠。 有的吃草汽抚,有的吃吃草的。為什么會這樣侨拦? 當(dāng)...
    4d8ef48cfd78閱讀 127評論 0 0
  • 校園時(shí)期,我總是更愿意相信精神富裕比物質(zhì)富裕來得重要惹谐。在能滿足溫飽的前提下持偏,我對“錢”這個(gè)字實(shí)在沒有太大的概念。雖...
    人生不怕重來閱讀 1,036評論 0 1