jsr133

1:介绍

  java虚拟机支持多线程运行。线程代表的就是Thread class。对用户来说创建线程的唯一办法就是创建一个Thread对象;每一个线程都和一个Thread对象关联。Thread对象调用start()方法就启动了相应的线程。

  线程的表现,尤其是当不能正常同步的时候,会变得混乱和违法直觉。这个规范说明(指:jsr133)描述了java语言里多线程编写的语义定义;它包含了这样的规则:即定义共享内存的读线程能够读到被共享内存的写线程写入的哪些数据。尽管这个规范类似于不同硬件架构的内存模型,但这是一个java内存模型的语义定义(semantics )。

  这些语义并不是描述一个多线程程序是如何执行的。而是描述了多线程程序允许展现的行为。(the behaviors that multithreaded programs are allowed to exhibit.)

(Any execution strategy that generates only allowed behaviors is an acceptable execution strategy. )任何执行策略只要产生的是这个规范允许的行为那么它就是可以接受的执行策略。

1.1 Locks

  

时间: 2024-11-09 23:36:32

jsr133的相关文章

Java内存模型-jsr133规范介绍(转)

最近在看<深入理解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

The JSR-133 Cookbook for Compiler Writers

The JSR-133 Cookbook for Compiler Writers by Doug Lea, with help from members of the JMM mailing list. [email protected]. Preface: Over the 10+ years since this was initially written, many processor and language memory model specifications and issues

Java内存模型-jsr133规范介绍

原文地址: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,

Java-内存模型(JSR-133)

Java 内存模型(Java Memory Model,JMM)看上去和 Java 内存结构(JVM 运行时内存结构)差不多,但这两者并不是一回事.JMM 并不像 JVM 内存结构一样是真实存在的,它只是一个抽象的概念. Java 的线程间通过共享内存(Java堆和方法区)进行通信,在通信过程中会存在一系列如可见性.原子性.顺序性等问题,而 JMM 就是围绕着多线程通信以及与其相关的一系列特性而建立的模型. 现在说 JMM 一般指的是 JDK 5 开始使用的新的内存模型,主要由 JSR-133:

深入理解Java内存模型(四)——volatile

volatile的特性 当我们声明共享变量为volatile后,对这个变量的读/写将会很特别.理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个锁对这些单个读/写操作做了同步.下面我们通过具体的示例来说明,请看下面的示例代码: class VolatileFeaturesExample { //使用volatile声明64位的long型变量 volatile long vl = 0L; public void set(long l) { vl = l;

深入理解Java内存模型(1 ) -- 基础(转载)

原文地址:http://www.infoq.com/cn/articles/java-memory-model-1 并发编程模型的分类 在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体).通信是指线程之间以何种机制来交换信息.在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递. 在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信.在消息传递的并发模型里,线程之间没有公共状态,线

非阻塞算法在并发容器中的实现【转】

转自:https://www.ibm.com/developerworks/cn/java/j-lo-concurrent/ 非阻塞算法在 Java 中的应用越来越广泛 , ConcurrentLinkedQueue 是 java. concurrent 包中基于非阻塞算法实现的并发容器的典范.通过本文,您将了解非阻塞算法的工作原理及其在 ConcurrentLinkedQueue 中的具体实现机制. 简介 非阻塞算法在更细粒度的层面协调争用,它比传统的锁有更高的并发性.随着非阻塞算法在 Jav

(第三章)Java内存模型(中)

一.volatile的内存语义 1.1 volatile的特性 理解volatile特性的一个好办法是把对volatile变量的单个读/写,看成是使用同一个锁对这些单个读/写操作做了同步.下面通过具体的示例来说明,示例代码如下: class VolatileFeaturesExample { volatile Long vl = 0L; //使用volatile声明64位的Long型变量 public void set(Long l) { vl = l; //单个volatile变量的写 } p

java内存模型-volatile

volatile 的特性 当我们声明共享变量为 volatile 后,对这个变量的读/写将会很特别.理解 volatile 特性的一个好方法是:把对 volatile 变量的单个读/写,看成是使用同一个锁对这些单个读/写操作做了同步.下面我们通过具体的示例来说明,请看下面的示例代码: class VolatileFeaturesExample { //使用volatile声明64位的long型变量 volatile long vl = 0L; public void set(long l) {