您的位置:首页 > 编程语言

高并发-线程安全处理(1)-可变整数类之代码详解

2014-10-30 01:15 225 查看
在处理线程安全时,首先需要引进 annotations 包

我们在说线程安全其实本质就是变量的原子性发生的状态变化,在任何系统,变量无处不在,因此,面对高并发多线程的业务代码处理就特别注意线程安全,也是我们很多程序员容易忽略的地方

1》 常规非安全写法

public class UnSynchronizedInteger {

private int value;

public synchronized int get() {

return value;

}

public synchronized void set(int value) {

this.value = value;

}

}

点评:这样的写法,针对单线程还可以说的过去,但现实场景特别是核心业务代码时,不可能不涉及到高并发下的多线程处理,在这种情况下,value值是可能被丢失的和失效的(这种故障不会在常规的测试中出现,等出现了也很难找到故障所在)。

2》 线程安全正确的写法:

@ThreadSafe

public class SynchronizedInteger {

@GuardedBy("this") private int value;

public synchronized int get() {

return value;

}

public synchronized void set(int value) {

this.value = value;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: