当前位置:首页 > 开发 > 互联网 > 正文

线程内存和主内存之间联系

发表于: 2015-05-07   作者:qifeifei   来源:转载   浏览:
摘要: 1, java多线程共享主内存中变量的时候,一共会经过几个阶段,    lock:将主内存中的变量锁定,为一个线程所独占。   unclock:将lock加的锁定解除,此时其它的线程可以有机会访问此变量。   read:将主内存中的变量值读到工作内存当中。   load:将read读取的值保存到工作内存中的变量副本中。  
1, java多线程共享主内存中变量的时候,一共会经过几个阶段, 

  lock:将主内存中的变量锁定,为一个线程所独占。

  unclock:将lock加的锁定解除,此时其它的线程可以有机会访问此变量。

  read:将主内存中的变量值读到工作内存当中。

  load:将read读取的值保存到工作内存中的变量副本中。

  use:将值传递给线程的代码执行引擎。

  assign:将执行引擎处理返回的值重新赋值给变量副本。

  store:将变量副本的值存储到主内存中。

  write:将store存储的值写入到主内存的共享变量当中。 

所以线程操作共享变量的时候,都不是直接操作主内存中的变量,而是先把主内存中的变量copy一个副本到线程自己的栈中,然后做修改,修改好了会再次更新到主内存中。这中间经过很多的步骤,虽然线程内变量副本和主内存中变量做同步的时候也是加了锁的,但这只是对变量的读和写锁,并不能保证外面的业务计算线程安全,就带来了多线程访问数据不一致的问题,那么就要解决线程安全问题。

 

 

线程内存和主内存之间联系

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
java线程内存模型 线程、工作内存、主内存三者之间的交互关系图: key edeas 所有线程共享主内存 每
java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中
在主线程上,可以控制子线程启动,停止,清零 如果子线程启动的话,每一秒钟会向主线程发送一个数字
工作内存与主内存 Java内存模型(jmm)的出现是为了各种操作系统和硬件的内存访问的差异。 Java内存
Java线程之间的通信由Java内存模型(简称为JMM)控制,JMM决定一个线程对共享变量的写入何时对另一
java内存模型与线程 参考 http://baike.baidu.com/view/8657411.htm http://developer.51cto.com/ar
Android的线程和内存模型 Android操作系统在boot后,会启动一个Zygote(受精卵)进程,Zygote进程负责
转载时请注明出处:http://blog.csdn.net/absurd 城里的人想出去,城外的人想进来。这是《围城》里
出自: http://blog.csdn.net/absurd 城里的人想出去,城外的人想进来。这是《围城》里的一句话,它
1. 共享内存 大家都知道进程空间是独立的,它们之间互不影响。比如同是0xabcd1234地址的内存,在不
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号