首页 新闻 会员 周边

java虚拟机中主内存和工作内存之间的八种交互方式中lock unlock解惑。

0
悬赏园豆:10 [待解决问题]
《深入理解java虚拟机》书中第12章:java内存模型与线程,第320页中
其中写道:内存间的交互方式分为八个步骤来完成:
1. lock、unlock,请问这两个操作步骤是我们平时程序员所写的同步等操作呢,还是java虚拟机内部的操作(由于以下几个步骤对程序员都是不可见的,是虚拟机自己完成的),都是如何实现的呢;
2. read、load:将主内存的数据读取到工作内存中为什么需要两步操作了? read是一个操作、load是一个赋值操作吗?

由于初学java虚拟机,有很多不懂的地方,望解惑。请尽快回复,非常感谢。
zhanghi23的主页 zhanghi23 | 初学一级 | 园豆:192
提问于:2013-07-19 21:45
< >
分享
所有回答(1)
0

第一个问题 我在《深入理解java虚拟机》书中第12章没有找到

那么 我们暂且可以理解这JMM的同步或者是不同步的概念

首先你应该已经了解到了吧 线程之间的通讯方式就位两种:共享内存和消息传递。而JAVA用的是共享内存模型。

而在共享内存模型中,并发线程的同步是必须要程序员显示的去控制的(synchronized,lock等),所以第一个你提出的问题应该是程序员自己控制的。

第二个问题 JVM中 共享内存模型是怎样共享的,是由线程本身私有的空间(个人觉得应该是JAVA栈)公享变量副本主动赋值到主内存中,再由另一个内存在主内存中取得 而后复制到自己的工作内存中 这也就解释了你对read 和load 的疑问

zm112358 | 园豆:213 (菜鸟二级) | 2013-08-01 18:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册