Copy of
| 2020-9-21
0  |  0 分钟
JMM内存模型是Java提供用于屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的并发效果,可以认为是一组规则/规范,规定了一个线程如何和何时可以看到由其他线程修改过后的共享变量的值,以及在必须时如何同步的访问共享变量。
JMM是围绕着程序执行的原子性、有序性、可见性展开。
  • synchronized可以保证原子性、有序性、可见性。
    • synchronized会在执行结束后,将变量刷新进入主存。保证了可见性;
    • 因为是单线程,所以即使发生重排序,也不影响结果。保证了有序性
  • volatile保证了有序性和可见性
    • 通过在字节码前后加入内存屏障实现有序性。
    •  
目录