jsr133】的更多相关文章

1:介绍 java虚拟机支持多线程运行.线程代表的就是Thread class.对用户来说创建线程的唯一办法就是创建一个Thread对象:每一个线程都和一个Thread对象关联.Thread对象调用start()方法就启动了相应的线程. 线程的表现,尤其是当不能正常同步的时候,会变得混乱和违法直觉.这个规范说明(指:jsr133)描述了java语言里多线程编写的语义定义:它包含了这样的规则:即定义共享内存的读线程能够读到被共享内存的写线程写入的哪些数据.尽管这个规范类似于不同硬件架构的内存模型,…
原文地址:http://www.cnblogs.com/aigongsi/archive/2012/04/26/2470296.html; 近期在看<深入理解Java虚拟机:JVM高级特性与最佳实践>讲到了线程相关的细节知识,里面讲述了关于java内存模型,也就是jsr 133定义的规范. 系统的看了jsr 133规范的前面几个章节的内容,认为受益匪浅.废话不说,简要的介绍一下java内存规范. 什么是内存规范 在jsr-133中是这么定义的 A memory model describes,…
The JSR-133 Cookbook for Compiler Writers by Doug Lea, with help from members of the JMM mailing list. dl@cs.oswego.edu. Preface: Over the 10+ years since this was initially written, many processor and language memory model specifications and issues…
最近在看<深入理解Java虚拟机:JVM高级特性与最佳实践>讲到了线程相关的细节知识,里面讲述了关于java内存模型,也就是jsr 133定义的规范. 系统的看了jsr 133规范的前面几个章节的内容,觉得受益匪浅.废话不说,简要的介绍一下java内存规范. 什么是内存规范 在jsr-133中是这么定义的 A memory model describes, given a program and an execution trace of that program, whether the e…
What is a memory model, anyway? In multiprocessor systems, processors generally have one or more layers of memory cache, which improves performance both by speeding access to data (because the data is closer to the processor) and reducing traffic on…
最近在看多线程相关的东西,通过阅读JSR133的faq来加深自己对多线程的理解,里面大部分的内容比较简单(越到后面越难),但是有的部分比较难以理解还没有完全弄懂,所以这里只记录了一下比较简单的阅读笔记,后续会慢慢的完善,有兴趣的朋友也可以去阅读下JSR133的faq或者JSR133中文版 1.介绍 JSR133规范即JavaTM内存模型与线程规范.它描述了用JavaTM语言编写的多线程程序的语义:包括多线程更新共享内存时,读操作能看到什么值的规则.因为本规范与不同的硬件架构的内存模型相似,所以,…
Java 内存模型(Java Memory Model,JMM)看上去和 Java 内存结构(JVM 运行时内存结构)差不多,但这两者并不是一回事.JMM 并不像 JVM 内存结构一样是真实存在的,它只是一个抽象的概念. Java 的线程间通过共享内存(Java堆和方法区)进行通信,在通信过程中会存在一系列如可见性.原子性.顺序性等问题,而 JMM 就是围绕着多线程通信以及与其相关的一系列特性而建立的模型. 现在说 JMM 一般指的是 JDK 5 开始使用的新的内存模型,主要由 JSR-133:…
1.介绍 JVM支持多种线程的执行,Threads代表的是线程类,位于java.lang.Thread包下,唯一的方式就是为用户在这个类下的对象创建线程,每一个线程关联着一个对象,一个线程将在start()调用时声明这个线程对象 在针对线程同步错误的情况下,手册描述了多线程程序的语义,包括了值位于只读内存在线程中更新的情况,这些都是基于内存模型下的语义规范,而这个文档主要讲述了内存模型. 这些语义并不是结束如何执行一个多线程程序,而描述多线程所表现的原理机制. 1.1 Locks 线程之间最基本…
目录 1. 什么是内存模型? 2. JSR 133是关于什么的? 3. 再谈指令重排序 4.同步都做了什么? 5. final字段在旧的内存模型中为什么可以改变? 6."初始化安全"与final字段? 7. 增强volatile语义 8. 修复"double-checked locking"的问题 9. 我什么我要关心这些问题? 参考文献 1. 什么是内存模型? 在多处理器系统中,为了提高访问数据的速度,通常会增加一层或多层高速缓存(越靠近处理器的缓存速度越快).…
并发编程模型 1.两个关键问题 1)线程之间如何通信 共享内存程之间共享程序的公共状态,通过写-读内存中的公共状态进行隐式通信 消息传递程之间没有公共状态,线程之间必须通过发送消息来显式进行通信 2)线程之间如何同步 线程之间没有公共状态,线程之间必须通过发送消息来显式进行通信 总结:Java的并发采用的是共享内存模型,Java线程之间的通信总是隐式进行,整个通信过程对程序员完全透明. 2.抽象结构 1)本地内存 每个线程都有一个私有的本地内存(LocalMemory),本地内存中存储了该线程以…