《Java 并发核心编程》.pdf

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《Java 并发核心编程》.pdf

Java Java JJaavvaa 并发核心编程 内容涉及: 1、关于java并发 2、概念 3、保护共享数据 4、并发集合类 5线程 6、线程协作及其他 1 java 1 java 11、关于jjaavvaa并发 自从java 创建以来就已经支持并发的理念,如线程和锁。这篇指南主要是为帮助java 多线 程开发人员理解并发的核心概念以及如何应用这些理念。本文的主题是关于具有java 语言 风格的Thread、synchronized、volatile,以及J2SE5 中新增的概念,如锁(Lock)、原子性 (Atomics)、并发集合类、线程协作摘要、Executors。开发者通过这些基础的接口可以构建高 并发、线程安全的java应用程序。 2 2 22、概念 本部分描述的java并发概念在这篇DZoneRefard会被通篇使用。 从JVM 并发看CPU 内存指令重排序(Memory Reordering):/illustrate-memory-reordering-in-cpu java内存模型详解:/explain-java-memory-model-in-detail 概念 描述 JavaMemoryModel 在JavaSE5(JSR133)中定义的Java Memory Model(JMM)是为 Java内存模型 了确保当编写并发代码的时候能够提供 Java 程序员一个可用的 JVM 实现。术语JMM 的作用类似与一个观察同步读写字段的 monitor。它按照“happens-before order(先行发生排序)”的顺序— 可以解释为什么一个线程可以获得其他线程的结果,这组成了一个 属性同步的程序,使字段具有不变性,以及其他属性。 monitor Java 语言中,每个对象都拥有一个访问代码关键部分并防止其他对 Monitor 象访问这段代码的“monitor”(每个对象都拥有一个对代码关键部 分提供访问互斥功能的“monitor”)。这段关键部分是使用 synchronized 对方法或者代码标注实现的。同一时间在同一个 monitor 中,只允许一个线程运行代码的任意关键部分。当一个线 程试图获取代码的关键部分时,如果这段代码的monitor被其他线 程拥有,那么这个线程会无限期的等待这个monitor 直到它被其他 线程释放。除了访问互斥之外,monitor 还可以通过wait 和notify 来实现协作。 原子字段赋值 除了doubles和langs 之外的类型,给一个这些类型的字段赋值是一 Atomicfield 个原子操作。在JVM 中,doubles 和langs 的更新是被实现为2 个 assignment 独立的操作,因此理论上可能会有其他的线程得到一个部分更新的 结果。为了保护共享的doubles 和langs,可以使用volatile 标记这 个字段或者在synchronized修饰的代码块中操作字段。 竞争状态 竞争发生在当不少于一个线程对一个共享的资源进行一系列的操 Racecondition 作,如果这些线程的操作的顺序不同,会导致多种可能的结果。 数据竞争 数据竞争主要发生在多个线程访问一个共享的、non-final、 Datarace non-volatile、没有合适的synchronization限制的字段。Java内存模 型不会对这种非同步的数据访问提供任何的保证。在不同的架构和 机器中数据竞争会导致不可预测的行

文档评论(0)

wyth + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档