Java多线程编程实战指南(设计模式篇)

Java多线程编程实战指南(设计模式篇)

Java多线程编程实战系列

暂无评价综合评分的显示会考虑用户真实性等多项因素,每部作品出现综合评分的时间不定。
8.539 评价豆瓣读书
免费试读

作品简介

随着CPU多核时代的到来,多线程编程在充分利用计算资源、提高软件服务质量方面扮演了越来越重要的角色。而 解决多线程编程中频繁出现的普遍问题可以借鉴设计模式所提供的现成解决方案。然而,多线程编程相关的设计模式书籍多采用C++作为描述语言,且书中所举的例子多与应用开发人员的实际工作相去甚远。《Java多线程编程实战指南(设计模式篇)》采用Java(JDK1.6)语言和UML为描述语言,并结合作者多年工作经历的相关实战案例,介绍了多线程环境下常用设计模式的来龙去脉:各个设计模式是什么样的及其典型的实际应用场景、实际应用时需要注意的事项以及各个模式的可复用代码实现。

《Java多线程编程实战指南(设计模式篇)》适合有一定Java多线程编程基础、经验的读者。

黄文海,2004年开始从事软件开发工作,近几年从事软件项目管理工作。在其工作过程中积累了丰富的技术指导经验和企业内部培训经验。曾在InfoQ中文站和IBM developerWorks上发表过十几篇技术、项目管理文章。

作品目录

  1. 推荐序
  2. 前言
  3. 第1章 Java多线程编程实战基础
  4. 1.1 无处不在的线程
  5. 1.2 线程的创建与运行
  6. 1.3 线程的状态与上下文切换
  7. 1.4 线程的监视
  8. 1.5 原子性、内存可见性和重排序——重新认识synchronized和volatile
  9. 1.6 线程的优势和风险
  10. 1.7 多线程编程常用术语
  11. 第2章 设计模式简介
  12. 2.1 设计模式及其作用
  13. 2.2 多线程设计模式简介
  14. 2.3 设计模式的描述
  15. 第3章 Immutable Object(不可变对象)模式
  16. 3.1 Immutable Object模式简介
  17. 3.2 Immutable Object模式的架构
  18. 3.3 Immutable Object模式实战案例解析
  19. 3.4 Immutable Object模式的评价与实现考量
  20. 3.5 Immutable Object模式的可复用实现代码
  21. 3.6 Java标准库实例
  22. 3.7 相关模式
  23. 3.8 参考资源
  24. 第4章 Guarded Suspension(保护性暂挂)模式
  25. 4.1 Guarded Suspension模式简介
  26. 4.2 Guarded Suspension模式的架构
  27. 4.3 Guarded Suspension模式实战案例解析
  28. 4.4 Guarded Suspension模式的评价与实现考量
  29. 4.5 Guarded Suspension模式的可复用实现代码
  30. 4.6 Java标准库实例
  31. 4.7 相关模式
  32. 4.8 参考资源
  33. 第5章 Two-phase Termination(两阶段终止)模式
  34. 5.1 Two-phase Termination模式简介
  35. 5.2 Two-phase Termination模式的架构
  36. 5.3 Two-phase Termination模式实战案例解析
  37. 5.4 Two-phase Termination模式的评价与实现考量
  38. 5.5 Two-phase Termination模式的可复用实现代码
  39. 5.6 Java标准库实例
  40. 5.7 相关模式
  41. 5.8 参考资源
  42. 第6章 Promise(承诺)模式
  43. 6.1 Promise模式简介
  44. 6.2 Promise模式的架构
  45. 6.3 Promise模式实战案例解析
  46. 6.4 Promise模式的评价与实现考量
  47. 6.5 Promise模式的可复用实现代码
  48. 6.6 Java标准库实例
  49. 6.7 相关模式
  50. 6.8 参考资源
  51. 第7章 Producer-Consumer(生产者/消费者)模式
  52. 7.1 Producer-Consumer模式简介
  53. 7.2 Producer-Consumer模式的架构
  54. 7.3 Producer-Consumer模式实战案例解析
  55. 7.4 Producer-Consumer模式的评价与实现考量
  56. 7.5 Producer-Consumer模式的可复用实现代码
  57. 7.6 Java标准库实例
  58. 7.7 相关模式
  59. 7.8 参考资源
  60. 第8章 Active Object(主动对象)模式
  61. 8.1 Active Object模式简介
  62. 8.2 Active Object模式的架构
  63. 8.3 Active Object模式实战案例解析
  64. 8.4 Active Object模式的评价与实现考量
  65. 8.5 Active Object模式的可复用实现代码
  66. 8.6 Java标准库实例
  67. 8.7 相关模式
  68. 8.8 参考资源
  69. 第9章 Thread Pool(线程池)模式
  70. 9.1 Thread Pool模式简介
  71. 9.2 Thread Pool模式的架构
  72. 9.3 Thread Pool模式实战案例解析
  73. 9.4 Thread Pool模式的评价与实现考量
  74. 9.5 Thread Pool模式的可复用实现代码
  75. 9.6 Java标准库实例
  76. 9.7 相关模式
  77. 9.8 参考资源
  78. 第10章 Thread Specific Storage(线程特有存储)模式
  79. 10.1 Thread Specific Storage模式简介
  80. 10.2 Thread Specific Storage模式的架构
  81. 10.3 Thread Specific Storage模式实战案例解析
  82. 10.4 Thread Specific Storage模式的评价与实现考量
  83. 10.5 Thread Specific Storage模式的可复用实现代码
  84. 10.6 Java标准库实例
  85. 10.7 相关模式
  86. 10.8 参考资源
  87. 第11章 Serial Thread Confinement(串行线程封闭)模式
  88. 11.1 Serial Thread Confinement模式简介
  89. 11.2 Serial Thread Confinement模式的架构
  90. 11.3 Serial Thread Confinement模式实战案例解析
  91. 11.4 Serial Thread Confinement模式的评价与实现考量
  92. 11.5 Serial Thread Confinement模式的可复用实现代码
  93. 11.6 Java标准库实例
  94. 11.7 相关模式
  95. 11.8 参考资源
  96. 第12章 Master-Slave(主仆)模式
  97. 12.1 Master-Slave模式简介
  98. 12.2 Master-Slave模式的架构
  99. 12.3 Master-Slave模式实战案例解析
  100. 12.4 Master-Slave模式的评价与实现考量
  101. 12.5 Master-Slave模式的可复用实现代码
  102. 12.6 Java标准库实例
  103. 12.7 相关模式
  104. 12.8 参考资源
  105. 第13章 Pipeline(流水线)模式
  106. 13.1 Pipeline模式简介
  107. 13.2 Pipeline模式的架构
  108. 13.3 Pipeline模式实战案例解析
  109. 13.4 Pipeline模式的评价与实现考量
  110. 13.5 Pipeline模式的可复用实现代码
  111. 13.6 Java标准库实例
  112. 13.7 相关模式
  113. 13.8 参考资源
  114. 第14章 Half-sync/Half-async(半同步/半异步)模式
  115. 14.1 Half-sync/Half-async模式简介
  116. 14.2 Half-sync/Half-async模式的架构
  117. 14.3 Half-sync/Half-async模式实战案例解析
  118. 14.4 Half-sync/Half-async模式的评价与实现考量
  119. 14.5 Half-sync/Half-async模式的可复用实现代码
  120. 14.6 Java标准库实例
  121. 14.7 相关模式
  122. 14.8 参考资源
  123. 第15章 模式语言
  124. 15.1 模式与模式间的联系
  125. 15.2 Immutable Object(不可变对象)模式
  126. 15.3 Guarded Suspension(保护性暂挂)模式
  127. 15.4 Two-phase Termination(两阶段终止)模式
  128. 15.5 Promise(承诺)模式
  129. 15.6 Producer-Consumer(生产者/消费者)模式
  130. 15.7 Active Object(主动对象)模式
  131. 15.8 Thread Pool(线程池)模式
  132. 15.9 Thread Specific Storage(线程特有存储)模式
  133. 15.10 Serial Thread Confinement(串行线程封闭)模式
  134. 15.11 Master-Slave(主仆)模式
  135. 15.12 Pipeline(流水线)模式
  136. 15.13 Half-sync/Half-async(半同步/半异步)模式
  137. 附录A 本书常用UML图指南
  138. 参考文献
载入中

热门划线

  1. synchronized关键字可以实现操作的原子性,其本质是通过该关键字所包括的临界区(Critical Section)的排他性保证在任何一个时刻只有一个线程能够执行临界区中的代码,这使得临界区中的代码代表了一个原子操作3 人
  2. 与synchronized相比,前者既能保证操作的原子性,又能保证内存可见性。而volatile仅能保证内存可见性。但是,前者会导致上下文切换,而后者不会。3 人
  3. 好比俗话说“一个和尚打水喝,两个和尚挑水喝,三个和尚没水喝”,简单地使用多个线程进行编程可能导致更加糟糕的计算效率2 人
  4. 守护线程则不会影响JVM的正常停止2 人
  5. 而一个线程的状态从RUNNABLE状态转换为BLOCKED、WAITING和TIMED_WAITING这几个状态中的任何一个状态都意味着上下文切换(Context Switch)的产生。2 人
  6. CPU在执行代码的时候,为了减少变量访问的时间消耗可能将代码中访问的变量的值缓存到该CPU的缓存区(如L1 Cache、L2 Cache等)中。因此相应代码再次访问某个变量时,相应的值可能是从CPU缓存区而不是主内存中读取的。同样地,代码对这些被缓存过的变量的值的修改也可能仅是被写入CPU缓存区,而没有被写回主内存。由于每个CPU都有自己的缓存区,因此一个CPU缓存区中的内容对于其他CPU而言是不可见的。这就导致了在其他CPU上运行的其他线程可能无法“看到”该线程对某个变量值所做的更改。这就是所谓的内存可见性。2 人
  7. •提高系统的吞吐率(Throughput)。多线程编程使得一个进程中可以有多个并发(Concurrent,即同时进行的)的操作。例如,当一个线程因为I/O操作而处于等待时,其他线程仍然可以执行其操作。•提高响应性(Responsiveness)。使用多线程编程的情况下,对于GUI软件(如桌面应用程序)而言,一个慢的操作(比如从服务器上下载一个大的文件)并不会导致软件的界面出现被“冻住”的现象而无法响应用户的其他操作;对于Web应用程序而言,一个请求的处理慢了并不会影响其他请求的处理。•充分利用多核(Multicore)CPU资源。如今多核CPU的设备越来越普及,就算是手机这样的消费类设备也普遍使用多核CPU。实施恰当的多线程编程有助于我们充分利用设备的多核CPU资源,从而避免了资源浪费。•最小化对系统资源的使用。一个进程中的多个线程可以共享其所在进程所申请的资源(如内存空间),因此使用多个线程相比于使用多个进程进行编程来说,节约了对系统资源的使用。•简化程序的结构。线程可以简化复杂应用程序的结构。2 人

喜欢这本书的人也喜欢