JMM模型:是java虚拟机的内存管理规范,具有原子性,可见性,有序性(避免指令重排)。JMM分工作内存和主内存。工作内存是线程的私有内存,主内存是共享内存。
线程先从主内存读取共享变量,拷贝副本到工作内存,操作完成后写会主内存。在多线程的情况下,线程之间是不可见的,会出现主内存与工作内存变量值不一致的情况。
volatile实现了可见性和有序性,私有线程写入主存的时候,JAVA通过unsafe调用cpu的CAS指令写入主存。
JMM模型:是java虚拟机的内存管理规范,具有原子性,可见性,有序性(避免指令重排)。JMM分工作内存和主内存。工作内存是线程的私有内存,主内存是共享内存。
线程先从主内存读取共享变量,拷贝副本到工作内存,操作完成后写会主内存。在多线程的情况下,线程之间是不可见的,会出现主内存与工作内存变量值不一致的情况。
volatile实现了可见性和有序性,私有线程写入主存的时候,JAVA通过unsafe调用cpu的CAS指令写入主存。