實例講授Java並發編程之變量。本站提示廣大學習愛好者:(實例講授Java並發編程之變量)文章只能為提供參考,不一定能成為您想要的結果。以下是實例講授Java並發編程之變量正文
編寫線程平安須要關懷的:
1.同享的變量
2.可變的變量
同享意味著多個線程可以同時拜訪,可變意味著其值在性命周期可以轉變。
例如以下count 變量:
//線程不平安的類
public class UnsafeCount {
private int count = 0; //該變量是同享的
public void increase() { //這裡沒有同步機制,多個線程可以同時拜訪
count++; //該變量是可變的
}
public int getCount() {
return count;
}
}
有4種方法可以修復這個成績:
1.不在線程中同享該狀況變量,可以將變量封裝到辦法中(無狀況的對象必定是線程平安的);由於辦法中變量是每一個線程獨有的,和睦其它線程同享。好比:
public int add(int count){
return ++count;//這裡也能夠說無狀況的對象必定是線程平安的
}
2.將狀況變量修正為弗成變的變量。
private final int count = 0;
3.在拜訪狀況變量應用同步戰略。
public synchronized void increase() {
count++;
}
4.應用原子變量類。
private AtomicInteger count;
public void increase() {
count.getAndAdd(1);
}