Java 内存一致性属性说明

Java 内存一致性属性说明,java,multithreading,memory,Java,Multithreading,Memory,我正在查看并很难理解这意味着什么——“一个线程中的所有操作都发生在该线程上的任何其他线程从连接成功返回之前。”我能否在示例中获得一个示例,说明这意味着什么,以及在该示例中的“发生之前”保证是什么。如果您有以下代码 public class Test { public static int i = 1; public static void main(String[] args) throws Exception { System.out.println("Start main");

我正在查看并很难理解这意味着什么——“一个线程中的所有操作都发生在该线程上的任何其他线程从连接成功返回之前。”我能否在示例中获得一个示例,说明这意味着什么,以及在该示例中的“发生之前”保证是什么。

如果您有以下代码

public class Test {

 public static int i = 1;
 public static void main(String[] args) throws Exception {
  System.out.println("Start main");
  Thread t = new Thread(new Runnable() {
    public void run() {
      System.out.println("Start second");
      i = 10;
    }
  });
  t.start();
  t.join();
  System.out.println("After join");
  System.out.println(i); //should print 10
 }
}

run()
方法中完成的所有操作都发生在主线程从
t.join()获得控制权之前。这就是为什么静态变量
i
在主线程中打印时将具有值
10

您在理解它时有困难吗?