【发布时间】:2016-03-24 07:58:18
【问题描述】:
可以在以下概念性 Java 示例中:
public class X implements Runnable {
public volatile Object x = new Object();
@Runnable
public void run() {
for (;;) {
Thread.sleep(1000);
x = new Object();
}
}
}
x 曾经被其他线程读取为null?
奖励:我是否需要将其声明为 volatile(我并不真正关心该值,只要将来某个时候它将是新分配的值并且永远不会为空)
【问题讨论】:
-
没有得到你的问题。
x在方法范围内吗? -
@sidgate
volatile只能应用于字段。 -
如果其他线程能够在读取字段初始值设定项之前读取变量,那么确定...
-
不希望示例过于臃肿,但现在要让它膨胀。
-
不!没有膨胀!永远不要膨胀!
标签: java multithreading volatile