JMM : Java内存模型,是一种规范
Java 作为高级语言,屏蔽了cpu多层缓存这些细节,用 JMM 定义了一套读写内存数据的规范,虽然不再需要关心一级缓存和二级缓存的问题,但是 JMM 抽象了主内存和本地内存的概念
主内存和本地内存的关系:
JMM 有以下规定:
1) 所有的变量都存储在主内存中,同时每个线程也有自己独立的工作内存,工作内存中的变量内容是主内存中的拷贝
2) 线程不能直接读写主内存中的变量,而是只能操作自己工作内存中的变量,然后再同步到主内存中
3) 主内存是多个线程共享的,但线程间不共享工作内存,如果线程间需要通信,必须借助主内存中转来完成
**所有的共享变量存在于主内存中,每个线程有自己的本地内存,而线程读写数据共享也是通过本地内存交换的,
所以才导致了可见性问题**