JMM:Java 内存模型

85 阅读1分钟

Java内存模型(Java Memory Model,JMM)是一种规范,它描述了多线程之间共享变量的可见性和访问顺序的规则,以确保在多线程环境中的可靠性。JMM定义了线程和主内存之间的抽象关系,以及线程之间如何通过主内存进行通信。

JMM主要包括以下几个概念:

  1. 主内存(Main Memory): 所有线程共享的内存区域,存储着共享变量的数据。
  2. 工作内存(Working Memory): 每个线程独有的内存区域,存储着该线程使用到的变量的副本。
  3. 主内存与工作内存的交互: 线程不能直接操作主内存,它们只能通过将共享变量从主内存拷贝到自己的工作内存中进行操作,然后再将修改后的值刷新回主内存。
  4. 可见性: 一个线程对共享变量的修改,能够及时被其他线程看到,保证了在多线程环境中对共享变量的可见性。
  5. 原子性: 一个操作或者多个操作要么全部执行并且执行过程不会被中断,要么就都不执行。
  6. 有序性: 在Java中,线程之间操作的执行顺序不一定按照代码的先后顺序,JMM通过“happens-before”关系来保证一些操作的顺序性。

JMM通过volatile关键字、synchronized关键字、final关键字等机制来实现在多线程环境下的可见性、原子性和有序性。