作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我不确定 volatile 关键字是否也应该用于非基元。我有一个类成员,它由一个线程设置/分配,并由另一个线程访问。我应该将此成员声明为 volatile 吗?
private /* volatile */ Object o;
public void setMember(Object o) {
this.o = o;
}
public Object getMember() {
return o;
}
这里,setMember(...) 被一个线程调用,getMember() 被另一个线程调用。
例如,如果它是 boolean 值,则答案为是。
我使用的是 Java 1.4,本例中的成员是只读的。所以在这种情况下我只关心可见性,因此我的问题是关于 volatile 关键字。
最佳答案
是 - volatile
对引用类型字段的意义与它对原始类型字段的意义完全相同。除了在引用类型的情况下,字段引用的对象的成员必须还设计用于多线程访问。
关于java - volatile 关键字也适用于非基元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10608202/
我是一名优秀的程序员,十分优秀!