JSR-133是Java规范请求(Java Specification Request)的编号,它定义了Java内存模型(Java Memory Model,...
另外,文末也提到了,编译器也是造成上述问题的原因之一,然而无论何种原因造成指令重排序,Java 的专家们都在试图制定一些规范加以规避,以免开发者用不恰当的使用方式造成违反直觉的 bug,这些基本规则都被写在了 JSR-133 规范手册里。 与其说 JSR-133 制定的是规范,不如说这是 Java 专家组提供给 Java 开发者的理论...
在JSR133之前,Java内存模型有一些模糊的地方,这使得程序员在编写并发程序时会遇到各种问题。JSR133通过引入一些新的概念,如happens-before、synchronization order、program order等,提供了一种更清晰、更完整的模型。happens-before:这是JSR133中的一个重要概念,它定义了两个操作的执行顺序。如果一个操作happens-before另...
最终,JSR-133 为 Java 语言定义了一个新的内存模型,它修复了早期内存模型的缺陷。 所以,我们说的 JSR - 133 是关于内存模型的一种规范和定义。 JSR - 133 的设计目标主要包括: 保留Java 现有的安全性保证,比如类型安全,并加强其他安全性保证,比如线程观察到的每个变量的值都必须是某个线程对变量进行修改之后的...
最近在看《深入理解Java虚拟机:JVM高级特性与最佳实践》讲到了线程相关的细节知识,里面讲述了关于java内存模型,也就是jsr 133定义的规范。 系统的看了jsr 133规范的前面几个章节的内容,觉得受益匪浅。废话不说,简要的介绍一下java内存规范。 什么是内存规范 ...
JSR-133规范的措辞使得volatiles和monitors的规则 仅适用于可能被多线程访问的场景。如果编译器能够以某种方式证明lock只能被单个线程访问,那么这个lock可能会被优化。同样如果只被单线程访问的volatile字段可以充当普通字段normal field。更细粒度的分析和优化也是有可能的,例如:那些被证明仅在特定时间间隔内不可被多线程访...
现在说 JMM 一般指的是 JDK 5 开始使用的新的内存模型,主要由JSR-133: JavaTM Memory Model and Thread Specification(http://www.cs.umd.edu/users/pugh/java/memoryModel/,http://ifeve.com/jsr133-cn/)描述。 一、多线程的特性 原子性 一个操作不可被中断,要么执行完成,要么就不执行。
JSR-133(Java内存模型与线程规范)
内容提示: 1 / 66 JSR-133 :Java TM 内存模型与线程规范 翻译:ticmy 1 介绍 ... 3 1.1 锁 ...
JSR:https://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html 很早的译文:http://snake1987.iteye.com/blog/983254 What is a memory model, anyway? 在处理器的层次,一个存储模型定义必要的并且足够的条件,让当前的处理器可以看到另外的处理器写进一个储存(memory,如一个变量),并且当前的处理器...