[英]Thread safety for classes with non-final members with no mutator methods
对于以下课程,使mNumSides
最终化意味着什么? “线程安全性”受到影响吗?
class Shape {
private int mNumSides;
public Shape(int numSides) {
mNumSides = numSides;
}
public int getNumSides() {
return mNumSides;
}
}
绝对。 final
关键字可确保所有线程始终都能看到相同的mNumSides
值。 有关final
及其对内存模型的影响的更多信息,请参见此处 。
如果不使用final
该对象可能会不一致地发布到其他线程,并且线程有可能(虽然非常低)将mNumSides
的值视为0
而不是构造函数中传递的numSides
。 不过,使其volatile
或static
也将起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.