2 1 2例項變數非執行緒安全

2021-08-09 03:59:21 字數 1147 閱讀 9313

package cha02.execise02;

/*** created by sunyifeng on 17/9/20.

*/public class hasselfprivatenum else

system.out

.println(username + " num = " + num);

} catch (interruptedexception e)

}}

package cha02.execise02;

/*** created by sunyifeng on 17/9/20.

*/public class threada extends thread

@override

public void

run()

}

package cha02.execise02;

/*** created by sunyifeng on 17/9/20.

*/public class threadb extends thread

@override

public void

run()

}

package cha02.execise02;

/*** created by sunyifeng on 17/9/20.

*/public class run

}

執行結果:

a set over:100

b set over:200

b num = 200

a num = 200

程式分析:

1、多個執行緒訪問乙個物件的例項變數,則可能出現「髒讀」(非執行緒安全)。

2、多個執行緒訪問乙個不同步的方法時,則可能出現「髒讀」(非執行緒安全)。

在方法前,加入synchronized之後即可同步。

synchronized public void 

addi(string username) else

system.out

.println(username + " num = " + num);

} catch (interruptedexception e)

}

例項變數與執行緒安全

public class mythread extends thread main方法跑一下 列印結果顯示,執行緒1,3,2列印的count的值都是3,產生了非執行緒安全問題。當thread 1執行count 時,分幾步完成 1 把count的值從主存中複製乙份到快取記憶體中 2 對count進行 ...

多執行緒 例項變數與執行緒安全

自定義執行緒類中的例項變數針對其他執行緒有共享和不共享之分,這在多個執行緒之間進行互動時是乙個很重要的技術點。不共享資料的情況 下面通過乙個示例來看下資料不共享的情況。package com.vhqimk.thread 測試資料不共享的情況 public class test class mythr...

使用執行緒安全的單個例項變數

importorg.slf4j.logger importorg.slf4j.logge ctory created by csj on 2017 3 24.非執行緒安全存在於例項變數,方法內部的私有變數不存在非執行緒安全問題,永遠都是執行緒安全的,這都是方法內部的變數是私有的特性造成的。如果多個執...