在處理線程安全時(shí),首先需要引進(jìn) annotations 包
我們?cè)谡f(shuō)線程安全其實(shí)本質(zhì)就是變量的原子性產(chǎn)生的狀態(tài)變化,在任何系統(tǒng),變量無(wú)處不在,因此,面對(duì)高并發(fā)多線程的業(yè)務(wù)代碼處理就特別注意線程安全,也是我們很多http://www.vxbq.cn容易疏忽的地方
1》 常規(guī)非安全寫(xiě)法
public class UnSynchronizedInteger {
private int value;
public synchronized int get() {
return value;
}
public synchronized void set(int value) {
this.value = value;
}
}
點(diǎn)評(píng):這樣的寫(xiě)法,針對(duì)單線程還可以說(shuō)的過(guò)去,但現(xiàn)實(shí)場(chǎng)景特別是核心業(yè)務(wù)代碼時(shí),不可能不觸及到高并發(fā)下的多線程處理,在這類情況下,value值是可能被丟失的和失效的(這類故障不會(huì)在常規(guī)的測(cè)試中出現(xiàn),等出現(xiàn)了也很難找到故障所在)。
2》 線程安全正確的寫(xiě)法:
@ThreadSafe
public class SynchronizedInteger {
@GuardedBy("this") private int value;
public synchronized int get() {
return value;
}
public synchronized void set(int value) {
this.value = value;
}
}