Безопасны ли операции перед 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

0 ответов

Другие вопросы по тегам