Безопасны ли операции перед Thread.start() по отношению к новому потоку?
Существуют ли какие-либо гарантии для переменной видимости и / или порядка инструкций перед 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, представленной в Java 5