转载

JAVA内存模型

==================================================================

Java 内存模型

浅析java内存模型--JMM(Java Memory Model)

全面理解JAVA内存模型

2.1 Java 内存模型的基本原理

Java 内存模型,由于 Java 被设计为 跨平台 的语言,在内存管理上,显然也要有一个统一的 模型。系统存在一个 主内存 (Main Memory) ,  Java 中所有变量都储存在主存中,对于所有线程都是共享的每条线程都有自己的 工作内存   (Working Memory) , 工作内存中保存的是主存中某些变量的拷贝,线程对所有变量的操作都是在工作内存中进行,线程之间无法相互直接访问 ,变量传递均需要通过主存完成。

因为当线程处于不同的cpu中时,它各自的变量保存在各自cpu的寄存器或者高速缓存中,这样回事的变量对于其它线程暂时不可见。

2.2  Volatile 的内存工作原理

Volatile  是保证多个线程之间变量可见性的 ,也就是说一个线程对变量进行了写操作,另外一个线程能够获取它最新的值。

它的工作原理是,它对写和读都是直接操作工作主存的。(这个可以通过操作字节码看到)

2.3  Synchronized 的内存操作模型 :

Synchronized, 有两层语义,一个是互斥,一个是可见性。在可见性上面,它的工作原理有点不同:当线程进入同步块时,会从主存里面获取最新值,然后当线程离开同步块时,再把变量的值更新到主存。

http://tomyz0223.iteye.com/blog/1001778

===================================================================

原文  http://uule.iteye.com/blog/2419969
正文到此结束
Loading...