Thread.start()线程之前的操作是否与新线程相关?

时间:2017-05-30 10:30:52

标签: java multithreading synchronization happens-before memory-visibility

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

0 个答案:

没有答案