百度seo网站优化,百度正版下载恢复百度,wordpress欢迎邮件代码,做公众号app 网站 app1.什么是JMM JMM就是Java内存模型(java memory model)。因为在不同的硬件生产商和不同的操作系统下#xff0c;内存的访问有一定的差异#xff0c;所以会造成相同的代码运行在不同的系统上会出现各种问题。所以Java内存模型(JMM)屏蔽掉各种硬件和操作系统的内存访问差异…1.什么是JMM JMM就是Java内存模型(java memory model)。因为在不同的硬件生产商和不同的操作系统下内存的访问有一定的差异所以会造成相同的代码运行在不同的系统上会出现各种问题。所以Java内存模型(JMM)屏蔽掉各种硬件和操作系统的内存访问差异以实现让 Java 程序在各种平台下都能达到一致的并发效果。 Java内存模型JMM是一个抽象的概念用于定义Java程序中多线程之间共享内存的行为。JMM描述了变量包括实例字段、静态字段和数组元素在内存中的存储和读取方式以及在多线程环境中如何确保可见性和有序性。 JMM的主要目的是为了解决在多线程环境下内存的可见性和一致性问题。它规定了所有变量都存储在主内存中每个线程拥有自己的工作内存工作内存中保存了主内存中变量的副本。线程对变量的所有操作读取、写入都在工作内存中进行最后再将结果同步回主内存。 不同的线程之间也无法访问对方工作内存中的变量。线程之间变量值的传递均需要通过主内存来完成。 2. JMM的核心目标是确保多线程环境下的可见性、有序性和原子性 原子性一个或多个操作要么全部执行要么全部不执行执行的过程中不会被任何因素打断。例如synchronized关键字能确保方法或代码块的原子性。 可见性一个线程对共享变量的修改能够被其他线程看到。通过volatile关键字来实现可见性。 有序性程序的执行在实际运行时可能会被重排序但JMM提供了一定的保证使得某些操作在多线程环境中会按照程序的顺序执行。JMM允许某些指令重排序以提高性能但会保证线程内的操作顺序不会被破坏并通过happens-before关系保证跨线程的有序性。 更详细的可以参考下面文章
JMMJava内存模型详解-CSDN博客
JVM——一文搞懂JMMJava内存模型-CSDN博客