例示:volatile是否只适用于primitve type ?
volatile是否只适用于primitve type? 也就是说,java对象是否也存在 主内存+工作内存副本这样的机制?
结论是:volatile对object reference也适用。
具体来说,如果一个变量原来是指向对象A的,一个线程把它指向对象B后,另一个线程并不能感知这种变化。
例如,
下面说另一个问题:
对于non-volatile object variable,如果我们改变的不是变量的reference, 而是变量对象内部的值,会不会有可见性问题?
这是不是意味着:object前加个volatile可以使这个object里面的属性自动变成volatile? 我找了一些资料,没找到任何证据支持这种说法;为了保险起见,建议还是把BoolBean.stop,即object里面的属性, 也声明为volatile.