首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

学习JVM原理-19.Java内存储器模型与并发

2012-10-06 
学习JVM原理-19.Java内存模型与并发摘自《深入理解Java虚拟机》周志明著JMM(Java Memory Model)是一种统一的

学习JVM原理-19.Java内存模型与并发
摘自《深入理解Java虚拟机》周志明著

JMM(Java Memory Model)是一种统一的内存模型,它屏蔽了各种硬件和操作系统的内存访问差异

它规定:
  1. 所有变量都存储在Main Memory中
  2. 每条线程有自己的Working Memory,里面存有Main Memory变量的副本; 线程只能操作这些副本,不能直接操纵Main Memory里的变量

JMM下的并发过程中有3个问题: Atomicity, Visibility, Ordering
  1. Atomicity: 基本数据类型的读写基本上是原子的;另外可以通过synchornized加锁保证原子性
  2. Visibility: 指变量被一个线程修改后能立即被另一个线程看到。volatile可以实现visibility, 因为用volatile的变量被线程修改后会立即同步到Main Memory中; synchronized关键一股词也可以,因为它规定“对一个变量Unlock之前,必须先把变量同步回Main Memory”中
  3. Ordering: JVM会对指令进行重排,后面的代码可能会在前面的代码之前执行。Ordering的意思是,不管指令重排成什么样,最终的结果不受影响。 volatile可以实现ordering,因为它禁止了指令重排; synchronized关键字也可以,因为它通过锁机制保证了线程对同一个资源进行访问的串行性

热点排行