目录
1:JMM---传说中的JAVA内存模型
2:为什么要有JMM
在我们日常的开发中,可能会涉及到多线程的业务,而JMM是多线程操作的基础
3:JMM原理解析
1:JMM内存模型的区域是基于两个内存区域的分别是1:本地内存---属于线程,2:主内存---属于JVM
2:在线程A刚刚开始工作的时候,会从主内存中拷贝一份共享变量PQM等等,到自己的工作内存中,然后对变量操作完成后将结果刷新写到主内存中(不一定会及时),然后线程B同时来了,也会拷贝一份共享变量到自己的本地内存中,操作完成后回写到主内存中(不一定会及时)
4:JMM会带来什么问题
JMM内存模型可能会带来多线程安全的问题,A,B线程同时对变量P = 0进行操作,A:p = p + 1,B: p = p + 1,然后回写到主内存中,按照道理来说,p的值应该是2,但是可能存在p的值是1的情况,原因是A或者B没有及时读取到主内存中最新值
5:是怎么解决的
在JAVA中是可以用 volatile(最轻量的同步机制) 关键字来解决的变量的可见性问题,详细可参考https://www.cnblogs.com/chenssy/p/6379280.html