Java内存模型

在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(同步是指程序用于控制不同线程之间操作发生相对顺序的机制。)

线程之间的通信机制模型有两种:共享内存和消息传递。

在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。 (隐式进行通信) 

在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过明确的发送消息来显式进行通信。(显示进行通信)

在共享内存并发模型里,同步是显式进行的。程序员必须显式指定某个方法或某段代码需要在线程之间互斥执行。(显示进行同步)

在消息传递的并发模型里,由于消息的发送必须在消息的接收之前,因此同步是隐式进行的。

Java的并发采用的是共享内存模型,Java线程之间的通信总是隐式进行,整个通信过程对程序员完全透明。(隐式进行)

在java中,所有实例域、静态域和数组元素存储在堆内存中,堆内存在线程之间共享(本文使用“共享变量”这个术语代指实例域,静态域和数组元素)。

局部变量(Local variables),方法定义参数(java语言规范称之为formal method parameters)和异常处理器参数(exception handler parameters)不会在线程之间共享,它们不会有内存可见性问题,也不受内存模型的影响。

http://www.cnblogs.com/jerry007/archive/2013/01/18/java%E4%B8%AD%E5%9F%9F.html

 java中的域

    所谓的域,翻译成英文就是field, 也就是我们常说的字段,或者说是属性。 比如类的字段(属性),局部的,全局的。所谓域,其实是“field”的翻译

然后实例域,就是 实例("object" )的"field"。包括实例域和静态域,静态域又叫类域。

    java中对象中的数据称为实例域(instance field)。

http://www.infoq.com/cn/articles/java-memory-model-1

原文地址:https://www.cnblogs.com/ydxblog/p/5724813.html