浏览 4251 次
锁定老帖子 主题:关于volatile 关键字的使用
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2013-03-02
public class IncreaseTest { private int value = 0; public synchronized int increment() { return value++; } } 上面代码中,方法increment()是线程安全的吗?是否必须要加上关键字:volatile 才是线程安全的呢? Java代码 private volatile int value = 0; 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2013-03-04
increment是线程安全的,因为已经有synchronized了。
更多volatile: http://ifeve.com/syn-jmm-volatile/ http://ifeve.com/volatile/ http://ifeve.com/java-memory-model-4/ |
|
返回顶楼 | |
发表时间:2013-03-05
java中, ++ 操作并非原子操作,需要锁机制。
|
|
返回顶楼 | |
发表时间:2013-03-05
volatile 变量是线程安全的
放心使用 |
|
返回顶楼 | |
发表时间:2013-03-05
synchronized 关键字可以保证有序性和可见性
volatile关键字可以保证可见性 因此只需要使用synchronized 即可 ,不用再加volatile。 |
|
返回顶楼 | |
发表时间:2013-03-06
synchronized锁的很严实了,不再需要volatile了
|
|
返回顶楼 | |
发表时间:2013-03-06
mynaAo7I 写道 synchronized 关键字可以保证有序性和可见性
volatile关键字可以保证可见性 因此只需要使用synchronized 即可 ,不用再加volatile。 不需要加了 |
|
返回顶楼 | |
发表时间:2013-03-07
最后修改:2013-03-07
http://bun-ny.iteye.com/blog/1434319
这里有很详细的解释 |
|
返回顶楼 | |
发表时间:2013-03-08
最后修改:2013-03-08
加锁同时保证原子性,可见性和顺序性,是线程安全的,不需要再使用volatile。
|
|
返回顶楼 | |
发表时间:2013-03-08
mynaAo7I 写道 synchronized 关键字可以保证有序性和可见性
volatile关键字可以保证可见性 因此只需要使用synchronized 即可 ,不用再加volatile。 扯! sync和volatile都可以保证有序性和可见性,volatile不保证原子性。 |
|
返回顶楼 | |