在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内存模型