Archive | 十一月, 2013

Java 并发之内存模型整理

一、概述

Java线程之间的通信由Java内存模型JMM控制,[highlight]JMM决定一个线程对共享变量的写入何时对另一个线程可见[/highlight]。从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(main memory)中,每个线程都有一个私有的本地内存(local memory),本地内存中存储了该线程以读/写共享变量的副本。本地内存是JMM的一个抽象概念,并不真实存在。它涵盖了缓存,写缓冲区,寄存器以及其他的硬件和编译器优化。Java内存模型的抽象示意图如下:

jmm2

从上图来看,线程A与线程B之间如要通信的话,必须要经历下面2个步骤:

  1. 首先,线程A把本地内存A中更新过的共享变量刷新到主内存中去。
  2. 然后,线程B到主内存中去读取线程A之前已更新过的共享变量。

在线程运行的时候有一个内存专用的一小块内存,当[......]

阅读全文

Tags: , , ,

Comments { 0 }