Thread.start()
与新线程的启动相关的变量可见性和/或指令顺序是否有任何保证?
具体来说,在下面的简约示例中,我是否正确假设var
应该是volatile
为了使输出具有确定性并始终打印“var = 10”?
public class ThreadExample {
private int var;
void example() {
var = 10;
Thread thread = new MyThread();
thread.start();
}
class MyThread extends Thread {
@Override
public void run() {
System.out.println("var = " + var);
}
}
}
注意:我的问题仅适用于 Java 5 中引入的“新”Java 内存模型