不同的平台,内存模型是不一样的,但是jvm的内存模型规范是统一的。其实java的多线程并发问题最终都会反映在java的内存模型上,所谓线程安全无非是要控制多个线程对某个资源的有序访问或修改。总结java的内存模型,要解决两个主要的问题:可见性和有序性。我们都知道计算机有高速缓存的存在,处理器并不是每次处理数据都是取内存的。JVM定义了自己的内存模型,屏蔽了底层平台内存管理细节,对于java开发人员,要清楚在jvm内存模型的基础上,如果解决多线程的可见性和有序性。
那么,何谓可见性? 多个线程之间是不能互相传递数据通信的,它们之间的沟通只能通过共享变量来进行。Java内存模型(JMM)规定了jvm有主内存,主内存是多个线程共享的。当new一个对象的时候,也是被分配在主内存中,每个线程都有自己的工作内存,工作内存存储了主存的某些对象的副本,当然线程的工作内存大小是有限制的。当线程操作某个对象时,执行顺序如下:
分享到:
相关推荐
于存在线程本地内存和主内存的原因,再加上重排序,会导致多线程环境下存在可见性的问题。那么我们正确使用同步、锁的情况下,线程A修改了变量a何时对线程B可见?下面小编来简单介绍下
浅谈Java中Mysql数据库的连接与操作.pdf
浅谈Java优势,关于java优势......
浅谈Java软件测试.pdf
本文中简要介绍任何语言设计者在类型模型中必须考虑的一些决策,着重介绍静态类型和动态类型的一些不同的决策。本文将展示一些不同极端的例子——...还将谈到Java语言的类型限制,以及如何突破Java类型的限制快速编程。
浅谈java中的几种随机数,浅谈java中的几种随机数,浅谈java中的几种随机数,浅谈java中的几种随机数
浅谈Java串行端口技术协议 浅谈JAVA串行端口技术协议 1 一、串行通讯慨述 2 二、RS232通讯基础 2 三、常见的边线方式 2 四、小技巧:如何辨别TXD和RXD端口? 3 五、安装JAVA COMMUNICATIONS API 3 六、通讯前的准备...
浅谈内存泄漏_收藏浅谈内存泄漏_收藏浅谈内存泄漏_收藏浅谈内存泄漏_收藏
浅谈Java的输入输出流.pdf 浅谈Java的输入输出流.pdf
浅谈java代理机制 .txt 浅谈java代理机制 .txt
浅谈android线程模型
程序实现树形,J2EE_6.0_API.chm,JAVA6交口称赞3.0.chm,java编程思想(完整版).chm,Java解惑.pdf,Java日期处理.txt,JAVA设计模式.chm,JDK_API_1_6_zh_CN.CHM,浅谈java内存模型.txt
浅谈JAVA技术.pdf
浅谈JAVA语言.pdf
浅谈Java的输入输出流
浅谈Java程序员的存储过程.doc 浅谈Java程序员的存储过程.doc浅谈Java程序员的存储过程.doc
浅谈Java异常.docx
主要介绍了浅谈Java内存区域划分和内存分配策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
浅谈java面向对象和引用,初学java的一些疑惑点
浅谈图论模型的建立与应用.专门介绍图论方法的建模过程,给有需要的朋友