jsr133-第三四章

3:Informal Semantics

  当代码被重排序的时候,一个程序必须被正确的同步来避免多种类型的违反直觉的行为发生。使用正确的同步不能保证程序里上述的行为是正确的。但是,使用它允许一个程序员以一种简单的途径来推理出一个程序的可能行为;一个正确同步的程序的行为是极少依赖可能的重排序的。没有正确的同步,非常奇怪的、令人迷惑的和匪夷所思的行为就可能会出现。

  有两个关键的办法来理解一个程序是否正确同步了:

  1:Conflicting Accesses (访问冲突)

    两个访问(读取或者写入)同一个共享字段或者数组元素,如果其中至少有一个访问时写入那么就被称为冲突Conficting。

  2:Happens-Before Relationship

    两个行为可以通过happens-before关系进行排序。如果一个行为happens-before另一个行为,那么第一个操作是可见的并且顺序先于第二个操作。应该被强调的事,一个两个行为之间的happens-before关系,并不意味着这些行为在java平台的实现中一定按照这样的顺序发生。happens-before关系通常强调的是两个互相冲突的行为之间的顺序,并且定义设么时候数据竞争将会发生。有一下一些途径来引入happens-before排序,包括:

  *  一个线程中的每一个行为happens-before 当前线程中的后续一切操作

  *  一个monitor上的解锁操作happens-before 同一个monitor上的后续一切锁定操作

  *  一个volatile类型的field的写操作happens-before 这个volatile类型的field的任何后续读操作

时间: 2024-10-12 05:58:10

jsr133-第三四章的相关文章

强化学习第三四章

1.梯度下降选择固定步长可能产生的情况:收敛.发散.重复的在两个数之间跳跃 2.np.zeros_like(x)  生成一个shape和x一样的全为0的数组 3.plt.counter画等高线图 4.tensorflow的scope  变量命名空间 (1)若tf.Variable(初始值,name=' ')这种方式,每一个scope都会对名字产生影响 若tf.variable_scope('123')这种方式, 只有variable_scoope这种会对名字产生影响 (2)在同一个scope内,

【自考】数据库系统原理——详解(第一章)

还记得当初第一遍看这本书的时候,很混乱,尤其是三四章,对这本书的理解不是很好,只是画了两张流程图,不敢贴出来,现在贴出来吧,希望能够得到大家的指导. 下面这篇博客的主题主要是讲第一章: 经过米老师那天一上午的讲解之后,对这本书不再产生惧怕,听米老师讲觉得它很简单,不过事实就是它很简单.下面我们就来看一下它到底有多简单吧! 本章主要讲的是一些基本概念,虽然基本概念枯燥,但它却涵盖了整本书的内容,本章节主要讲了两大类:数据和数据库.数据包括,数据管理技术的发展,数据的描述到抽象.数据库包括,数据库系

APUE学习笔记-记录二

这次回顾APUE中第三四章的内容,主要是文件I/O操作相关的接口函数.    UNIX系统的文件I/O是不带缓冲的I/O,不带缓冲是指每个read和write都调用系统内核的一个系统调用. 1.文件描述符 UNIX I/O的所有函数都是基于文件描述符来操作的.那什么是文件描述符呢?文件描述符是一个非负整数.当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符.该文件描述符fd是所有UNIX I/O函数的操作对象.UNIX系统把文件描述符0与进程标准输入关联,把文件描述符1与进程标准

《软件需求十步走》阅读笔记二

这一段时间阅读了<软件需求分析十步走>的第三四章,写一写书中一些个人感觉比较好的说法以及阅读感受. 首先是第三章<软件需求工程概论>. 需求工程和软件工程之间的关系界定没有质的变化,只是将需求工程从软件工程中剥离出来,将需求分析的分析工作和管理工作定义为需求工程.需求工程是面向全局的.系统顶层的.着眼未来的工程,是将客户业务作为内部研究对象,将软件工程全过程作为外部研究对象的工程.需求工程是圆心,软件工程是圆点. 需求工程的特征具有:全局性.主导性.主动性.过程性.规范性.可验证性

java并发读&写文件

最近在看Brian Goetz 的<<Java并发实战>>,这本书有两个版本,电子工业出版社的译本很糟糕,建议使用机械工业出版社出版出版的书籍. 在看到第三四章的时候突然想到了多线程读写文件,同时遇到一些书中没有的问题 1, 如何保证组合对象的安全性? 2, 如何判断不变性的约束条件 3, 如何不通过synchronized关键字和锁进行同步处理? 下面是一段代码, 用来从source 读取数据,通过多线程写入target文件中 思路: 1, 如何read/write文件? 2,

软考---21天复习心得

软考---21天复习心得 今年暑假决定参加11月份的软件设计师考试,从9月1号开始准备软考复习到现在已经21天了.期间有过充满激情,有过因为其他事情打断的苦恼,有过因为不知如何去看书的迷茫,也有过重新发现的欣喜-- 激情 大抵人们无论他是否能坚持干点是什么,总之刚开始的那几天里是非常有激情的.其实我这份激情还是持续的比较久的,大约有10多天吧.从一开始看马士兵J2SE的视频,再到希赛2006年软考的视频(需要资料的朋友,我会在两天之后将云盘的分享链接贴到文后)一气呵成. 苦恼 期间维护的项目客户

dont make me think札记:别让我思考

终于要提笔写点东西了,我掩饰不住自己的窃喜,这篇文章的内容可能和标题有所不符,哦,真抱歉,我害怕这样的文章成为你眼中的垃圾,因为如果你假装没看到这样的文章,我到觉得还对得起"读者体验",良心上过得去,然而如果你不幸看了,然后唾弃这篇文章,那么我觉得就良心不安了! 扯会淡 说实话,<dont make me think>这本书,我很早就看了三四章,只是苦于不知道如何将其中的观点和实践结合起来,真正为我所用,今天在各种困苦中又翻阅了第一章,到有了写篇文章的冲动. 以此看看我有没

【USACO1.1.1】Your Ride Is Here

Your Ride Is Here It is a well-known fact that behind every good comet is a UFO. These UFOs often come to collect loyal supporters from here on Earth. Unfortunately, they only have room to pick up one group of followers on each trip. They do, however

教你如何看一本编程的书

第一步: 首先看你选的这本书是什么级别的,可以说编程的书大致分为四种,初级入门.中级进阶.高级精进.项目实战看看是属于那个级别的,一般基本上看书的序就知道是什么级别的: 第二步: 知道书的级别之后就要分别击破: 1)初级入门 一般看这种书的人,都没有什么编程的经验,书讲的也是非常的浅,没有什么进入的算法,都是基础,但是也都是非常重要的,所以读这类书的方法就是,先看看目录,看看每章都讲的什么一般入门的编程类的书,第三四章是很重要的,讲的都是控制流,与符号.关键字什么的,所以先看清楚每章都讲的什么.