Java虚拟机并发编程

出版社:机械工业出版社
出版日期:2013-5
ISBN:9787111418931
作者:Venkat Subramaniam
页数:216页

内容概要

作者:(美)苏布拉马尼亚姆 译者:薛笛Venkat Subramaniam  资深Java技术专家、并发编程专家和敏捷技术专家,拥有超过20年的软件开发经验,在Java领域(整个Java平台)、敏捷开发领域有非常深入的研究,并进行了大量实践。他是Agile Developer公司创始人,在美洲、欧洲和亚洲等多个国家和地区开展培训和指导工作,已经帮助数以千计的软件开发人员成功地在其软件项目中运用敏捷方法。    他经常受邀在大型国际软件会议和用户组活动中发表技术演讲,深受欢迎。他著作颇丰,先后独自撰写了《.NET Gotchas》、《Programming Groovy》、《Programming Scala》等经典著作,尤为值得一提的是,他与人合著的《Practices of an Agile Developer》一书获得了2007年的Jolt生产力大奖。薛笛  资深软件开发工程师,精通分布式系统开发租Java相关技术,对JVM有深入的研究。目前就职于腾讯公司,担任高级开发工程师,负责手机QQ、手机Qzone等应用的后台开发。热衷于技术分享,在《程序员》杂志和IBM DevelopersWork上发表过多篇技术文章,CSDN博客专家。

书籍目录

译者序
前言
第1章 并发的威力与风险 1
1.1 线程:程序的执行流程 1
1.2 并发的威力 1
1.3 并发的风险 4
1.4 小结 9
第一部分 并发策略
第2章 分工原则 11
2.1 从顺序到并发 11
2.2 在IO密集型应用程序中使用并发技术 13
2.3 并发方法对IO密集型应用程序的加速效果 19
2.4 在计算密集型应用程序中使用并发技术 20
2.5 并发方法对于计算密集型应用程序的加速效果 25
2.6 有效的并发策略 26
2.7 小结 27
第3章 设计方法 28
3.1 处理状态 28
3.2 探寻设计选项 29
3.3 共享可变性设计 29
3.4 隔离可变性设计 30
3.5 纯粹不可变性设计 30
3.6 持久的/不可变的数据结构 31
3.7 选择一种设计方法 34
3.8 小结 34
第二部分 现代Java/JDK并发模型
第4章 可扩展性和线程安全 37
4.1 用ExecutorService管理线程 37
4.2 使线程协作 38
4.3 数据交换 47
4.4 Java 7 Fork-Join API 49
4.5 可扩展集合类 51
4.6 Lock和Synchronized 54
4.7 小结 58
第5章 驯服共享可变性 59
5.1 共享可变性 != Public 59
5.2 定位并发问题 59
5.3 保持不变式 61
5.4 管理好资源 62
5.5 保证可见性 64
5.6 增强并发性 65
5.7 保证原子性 67
5.8 小结 70
第三部分 软件事务内存
第6章 软件事务内存导论 71
6.1 同步与并发水火不容 71
6.2 对象模型的缺陷 72
6.3 将实体与状态分离 73
6.4 软件事务内存 74
6.5 STM中的事务 77
6.6 用STM实现并发 77
6.7 用Akka/Multiverse STM实现并发 82
6.8 创建事务 84
6.9 创建嵌套事务 90
6.10 配置Akka事务 97
6.11 阻塞事务—有意识地等待 100
6.12 提交和回滚事件 103
6.13 集合与事务 106
6.14 处理写偏斜异常 110
6.15 STM的局限性 112
6.16 小结 116
第7章 在Clojure、Groovy、Java、JRuby和Scala中使用STM 117
7.1 Clojure STM 117
7.2 Groovy集成 118
7.3 Java集成 122
7.4 JRuby集成 124
7.5 Scala中的可选方案 130
7.6 小结 133
第四部分 基于角色的并发模型
第8章 讨喜的隔离可变性 135
8.1 用角色实现隔离可变性 136
8.2 角色的特性 137
8.3 创建角色 138
8.4 收发消息 144
8.5 同时使用多个角色 148
8.6 多角色协作 152
8.7 使用类型化角色 159
8.8 类型化角色和murmurs 163
8.9 混合使用角色和STM 169
8.10 使用transactor 169
8.11 调和类型化角色 176
8.12 远程角色 182
8.13 基于角色模型的局限性 184
8.14 小结 184
第9章 在Groovy、Java、JRuby和Scala中使用角色 186
9.1 在Groovy中使用GPars提供的角色实现 186
9.2 在Java中使用Akka提供的角色实现 199
9.3 在JRuby中使用Akka提供的Actor实现 199
9.4 在Scala中使用角色 202
9.5 小结 202
第五部分 后记
第10章 并发编程之禅 205
10.1 慎重选择 205
10.2 并发:程序员指南 206
10.3 并发:架构师指南 207
10.4 明智地进行选择 208
附录1 Clojure agent 210
附录2 一些网络资源 214
参考文献 216

编辑推荐

苏布拉马尼亚姆所著的《Java虚拟机并发编程》——Java并发编程领域的里程碑之作,资深Java技术专家、并发编程专家、敏捷开发专家和Jolt大奖得主撰写,Amazon五星畅销书!    系统深入地讲解在JVM平台上如何利用JDK同步模型、软件事务内存模型和基于角色的并发模型进行并发编程。列举丰富示例。包含大量编程技巧和最佳实践。

作者简介

苏布拉马尼亚姆所著的《Java虚拟机并发编程》是Java并发编程领域的里程碑之作,由资深Java技术专家、并发编程专家、敏捷开发专家和Jolt大奖得主撰写,Amazon五星级畅销书。它系统深入地讲解在JVM平台上如何利用JDK同步模型、软件事务内存模型和基于角色的并发模型更好地进行并发编程。全书以示例驱动,通俗易懂,包含大量编程技巧、注意事项和最佳实践。要重点强调的是,本书并不仅仅只适合于Java语言的并发编程,它还适用于clojure、Groovy、JRuby和Scala等所有运行在JVM平台上的编程语言。
《Java虚拟机并发编程》共10章,分为五个部分。第一部分:并发策略,阐释了影响并发性的因素、如何有效实现并发,以及并发的设计方法等;第二部分:现代Java/JDK并发,讨论了现代Java API的线程安全和效率,以及如何处理已有应用程序中的现实问题和重构遗留代码时的原则;第三部分:软件事务内存,深入讨论了STM并就如何在各种主要的JVM语言里使用STM给出了指导意见;第四部分:基于角色的并发,详细讲解了如何在基于角色的模型下消除并发问题以及如何在自己的首选语言中使用角色模型;第五部分:后记,回顾了本书讨论的解决方案并总结了并发编程中的注意事项和最佳实践。

海报:


 Java虚拟机并发编程下载 精选章节试读 更多精彩书评



发布书评

 
 


精彩书评 (总计3条)

  •     书中讲到了并发编程的本质问题,说明了synchronized的低效,并推荐使用jdk1.5新api编程; 并详细介绍了STM和角色两种现代解决方案,STM类似于数据库的并发技术, 而角色则完全隔离了“共享可变性”, 这两钟技术都避免使用“低效的锁”;
  •     Akka的版本已经发生了很大的变化,从akka1.3到akka2.10。基本上书中的代码都不可用了。还是看文档吧骚年:http://doc.akka.io/docs/akka/2.0.1/project/release-notes.html--------------------------知乎式的分割线--------------------------------------这本书的Actor部分的确已经过时了,但是STM的部分并没有过时,而且内容比较易懂。如果要学习这部分还是建议找这本书看看。
  •     软件通过并发访问提高性能,这是大家的共识;但是并发带来的一系列问题,也正是大家所头疼的。这本书介绍了软件实现中遇到的并发问题,和Java中应对这些问题的方法:共享可变性:容易出问题,相比老的java同步api,java 1.5引入的并发接口更好一点,还有Lock类可以更灵活的控制锁,以及阻塞队列也能在解决某些并发问题时发挥作用。隔离可变性:不变的部分用来并发,可变的部分只在一个地方控制,避免多线程访问。不可变性:无锁方式的编程。包括STM(软件内存事务模型,当遇到冲突的时候,回滚并重试,适合写冲突少的场景),基于角色的编程(把要完成的功能分配给多个独立运行的角色,一个角色只运行在一个线程,角色之间通过发送不可变的消息实现通信。akka还支持TypedActor,使得角色的使用,跟普通对象的调用形式一样,内部转换为消息发送。角色之间的协同,通过STM事务来实现,非常完美。)本书 不仅介绍了这些并发问题解决方案,还介绍了每种方案的缺陷,便于大家根据实际情况选择。

精彩短评 (总计30条)

  •     推荐看了并发编程,但感觉没有掌握精髓的人阅读。我没有通读全书,仅看了java常规并发部分,已经感觉豁然开朗明悟在心了。本书给了你思路,解决方案及示例。剩下的就是你细细品味了。
  •     经典书籍很好的补充,也让我看到了别的语言的并发解决方案。
  •     不错的一本书,比较薄,看之前最好有一些并发基础,可以先读读《Java并发编程实战》
  •     看了几页,不错,需要去细细品味。
  •     这是我读的第一本完整说并发的书。我也和别人说过,我有两个心结,一个是大数据,一个是高并发。这里说了并发的3种设计方法:1 共享可变性,2 隔离可变性 3 纯粹不可变性。第一种很常见,第二种是设计的时候避免共享,第三种基本需要函数性语言。第一次让我见识了实体和状态,本来状态是不可变的,但是现在的面向对象把状态卷入到对象里去了,这个其实是应该分离的。也让我见识了stm 软件事务内存,用提交和回滚来保证安全的共享,我个人的理解者就是个乐观锁。也加深我对角色的理解,当时看java的nio的时候,select ractor模型一直不理解。现在有点感觉了,角色其实就是基于消息,select发送消息,ractor接受和处理消息。角色这种模型可以很好用于并发,因为他实现了隔离变化性,之间的耦合通过消息。
  •     讲解的非常详细,也很实用!
  •     STM+Actor 入门,怀疑整本书非 scala/clojure 部分都是来凑字数的
  •     内容还没看,应该不错 把
  •     STM理解。
  •     讲明了基本原则
  •     挺有用的,《Java并发编辑实战》以后再看这本是不错的补充
  •     和想象中有些偏差,作者主推他的Scala。实体和状态分离,是一个不错的思想。其实,很多东西都是相通的,我注意到从android3.0开始,STM已经引入了这些思想。另外,本书翻译作者,竟然用了甄环体,把我雷倒了~~
  •     书的质量很不错,内容也好,不过需要一定的基础才看的懂。
  •     连阿三都开始忽悠人了,此书不看也罢,基本上你去看Scala和Clojure即可。
  •     200页多点的书,看起来很薄,这是我买过的“性价比”最贵的书了,内容还没看,希望看后会有很大收获。简单看了下目录,感觉讲的还是很深的,如果仅仅是为了增强java并发编程能力,看那本《java并发编程实践》最好了。
  •     书今天刚到,讲解并发的的,需要有一定基础的,纸张不错,内容也不错。今天把第三章看完啦,感觉从并发的优势,并发的缺陷,并发的设计方法及每种方法的优势和不足,讲解了并发程序的设计。第四章讲解,jdk的并发包,应该还不错。
  •     点到即止,讲得并不深入
  •     大致看了一遍,讲的浅而广泛
  •     还是决定打个全5星,很薄的书,纠正了我不少“错误”看法
  •     刚看点,感觉还行,有些不是那么详细
  •     不错
  •     差不多吧,在并发这块了解不是太多,以前以为并发一定是异步的,原来可以做到同步。之后后面的例子一定要用多语言进行展示,篇幅有些太长了。
  •     极大开阔了JVM上并发编程的视野,针对IO密集型/计算密集型应用程序多线程技术的合理配置;3种并发设计方法的讨论,以及后续针对3种并发设计方法的代码重构,主要介绍了JDK并发包和JDK7的ForkJoin,还有主要是Clojure和Scala(Akka)下STM和Actor方案,剩下的就是找个项目实践练练手了!
  •     广度很够,深度都引用的。全篇围绕 Java, Groovy, Clojure 实现 线程,锁,事务,消息,银行存款。
  •     好书,有深度。这样的书让人事倍功半。作者给的例子也是那种一针见血,入木三分般
  •     干货太少。
  •     前半部介绍jdk的新特性,后面介绍了无锁编程,引入stm和角色两个核心概念;很实用的一本书,不过介绍的语言特性已有过时,需要继续补充新知识
  •     前几章讲的比较理论,后面都是基于scala、clojure等介绍STM、Actor等的使用。还是能学习到一些东东。
  •     很不错的一本讲解并发的书,虽然不是面面俱到,但是已经涵盖了大部分并发知识,最重要的是写的很有趣味,不像《并发编程实战》需要硬着头皮看完
  •     书很好,理解虚拟机并发编程 。
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024