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

[Java 多线程] 变量可见性

2010-11-29 11:05 197 查看
JVM 保证变量的读,写操作是原子的,但是没有保证变量的可见性。

因此:下面的代码不是线程安全的.

public class MutableInteger {

private int value;

public int getValue() {

return value;

}

public void setValue(int value) {

this.value = value;

}

}

一个线程可能修改了value 的值,但是另外的线程不能读到value 最新的值.

public class MutableInteger {

private int value;

//保证立刻可以读到最新的修改

public synchronized int getValue() {

return value;

}

//保证立刻可以写入最新的修改

public synchronized void setValue(int value) {

this.value = value;

}

}

加锁可以保证可见性和原子性; volatile 变量只能保证可见性.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: