下载 >  开发技术 >  Java > 图解Java多线程设计模式.[日]结城浩(带详细书签) PDF 下载 高清 完整版
0分

图解Java多线程设计模式.[日]结城浩(带详细书签) PDF 下载 高清 完整版

本书通过具体的Java 程序,以浅显易懂的语言逐一说明了多线程和并发处理中常用的12 种设计模式。内容涉及线程的基础知识、线程的启动与终止、线程间的互斥处理与协作、线程的有效应用、线程的数量管理以及性能优化的注意事项等。此外,还介绍了一些多线程编程时容易出现的失误,以及多线程程序的阅读技巧等。在讲解过程中,不仅以图配文,理论结合实例,而且提供了运用模式解决具体问题的练习题和答案,帮助读者加深对多线程和并发处理的理解,并掌握其使用技巧。 序章1 Java线程 1.1 Java线程 1.2 何谓线程 明为跟踪处理流程,实为跟踪线程 单线程程序 多线程程序 Thread类的run方法和start方法 1.3 线程的启动 线程的启动(1)——利用Thread类的子类 线程的启动(2)——利用Runnable接口 1.4 线程的暂停 1.5 线程的互斥处理 synchronized方法 synchronized代码块 1.6 线程的协作 等待队列——线程休息室 wait方法——将线程放入等待队列 notify方法——从等待队列中取出线程 notifyAll方法——从等待队列中取出所有线程 wait、notify、notifyAll是Object类的方法 1.7 线程的状态迁移 1.8 线程相关的其他话题 1.9 本章所学知识 1.10 练习题 序章2 多线程程序的评价标准 2.1 多线程程序的评价标准 安全性——不损坏对象 生存性——必要的处理能够被执行 可复用性——类可重复利用 性能——能快速、大批量地执行处理 评价标准总结 2.2 本章所学知识 2.3 练习题 第 1章 Single Threaded Execution模式——能通过这座桥的只有一个人 1.1 Single Threaded Execution模式 1.2 示例程序1:不使用Single Threaded Execution模式的程序 Main类 非线程安全的Gate类 UserThread类 执行起来看看……出错了 为什么会出错呢 1.3 示例程序2:使用Single Threaded Execution模式的程序 线程安全的Gate类 synchronized的作用 1.4 Single Threaded Execution模式中的登场角色 1.5 拓展思路的要点 何时使用(可使用Single Threaded Execution模式的情况) 生存性与死锁 可复用性和继承反常 临界区的大小和性能 1.6 相关的设计模式 Guarded Suspension模式 Read-Write Lock模式 Immutable模式 Thread-Specific Storage模式 1.7 延伸阅读1:关于synchronized synchronized语法与Before/After模式 synchronized在保护着什么 该以什么单位来保护呢 使用哪个锁保护 原子操作 long与double的操作不是原子的 1.8 延伸阅读2:java.util.concurrent包和计数信号量 计数信号量和Semaphore类 使用Semaphore类的示例程序 1.9 本章所学知识 1.10 练习题 第 2章 Immutable模式——想破坏也破坏不了 2.1 Immutable模式 2.2 示例程序 使用Immutable模式的Person类 Main类 PrintPersonThread类 2.3 Immutable模式中的登场角色 2.4 拓展思路的要点 何时使用(可使用Immutable模式的情况) 考虑成对的mutable类和immutable类 [性能] 为了确保不可变性 [可复用性] 标准类库中用到的Immutable模式 2.5 相关的设计模式 Single Threaded Execution模式 Read-Write Lock模式 Flyweight模式 2.6 延伸阅读1:final final的含义 2.7 延伸阅读2:集合类与多线程 示例1:非线程安全的java.util.ArrayList类 示例2:利用Collections.synchronizedList方法所进行的同步 示例3:使用copy-on-write的java.util.concurrent.CopyOnWriteArrayList类 2.8 本章所学知识 2.9 练习题 第3章 Guarded Suspension模式——等我准备好哦 3.1 Guarded Suspension模式 3.2 示例程序 Request类 RequestQueue类 ClientThread类 ServerThread类 Main类 java.util.Queue与java.util.LinkedList的操作 getRequest详解 putRequest详解 synchronized的含义 wait与锁 3.3 Guarded Suspension模式中的登场角色 3.4 拓展思路的要点 附加条件的synchronized 多线程版本的if 忘记改变状态与生存性 wait与notify/notifyAll的责任 [可复用性] 各种称呼 使用java.util.concurrent.LinkedBlockingQueue的示例程序 3.5 相关的设计模式 Single Threaded Execution模式 Balking模式 Producer-Consumer模式 Future模式 3.6 本章所学知识 3.7 练习题 第4章 Balking模式——不需要就算了 4.1 Balking模式 4.2 示例程序 Data类 SaverThread类 ChangerThread类 Main类 4.3 Balking模式中的登场角色 4.4 拓展思路的要点 何时使用(可使用Balking模式的情况) balk结果的表示方式 4.5 相关的设计模式 Guarded Suspension模式 Observer模式 4.6 延伸阅读:超时 Balking模式和Guarded Suspension模式之间 wait何时终止呢 guarded timed的实现(使用wait) synchronized中没有超时,也不能中断 java.util.concurrent中的超时 4.7 本章所学知识 4.8 练习题 第5章 Producer-Consumer模式——我来做,你来用 5.1 Producer-Consumer模式 5.2 示例程序 Main类 MakerThread类 EaterThread类 Table类 解读put方法 解读take方法 5.3 Producer-Consumer模式中的登场角色 5.4 拓展思路的要点 守护安全性的Channel角色(可复用性) 不可以直接传递吗 Channel角色的剩余空间所导致的问题 以什么顺序传递Data角色呢 “存在中间角色”的意义 Consumer角色只有一个时会怎么样呢 5.5 相关的设计模式 Mediator模式 Worker Thread模式 Command模式 Strategy模式 5.6 延伸阅读1:理解InterruptedException异常 可能会花费时间,但可以取消 加了throws InterruptedException的方法 sleep方法和interrupt方法 wait方法和interrupt方法 join方法和interrupt方法 interrupt方法只是改变中断状态 isInterrupted方法——检查中断状态 Thread.interrupted方法——检查并清除中断状态 不可以使用Thread类的stop方法 5.7 延伸阅读2:java.util.concurrent包和Producer-Consumer模式 java.util.concurrent包中的队列 使用java.util.concurrent.ArrayBlockingQueue的示例程序 使用java.util.concurrent.Exchanger类交换缓冲区 5.8 本章所学知识 5.9 练习题 第6章 Read-Write Lock模式——大家一起读没问题,但读的时候不要写哦 6.1 Read-Write Lock模式 6.2 示例程序 Main类 Data类 WriterThread类 ReaderThread类 ReadWriteLock类 执行起来看看 守护条件的确认 6.3 Read-Write Lock模式中的登场角色 6.4 拓展思路的要点 利用“读取”操作的线程之间不会冲突的特性来提高程序性能 适合读取操作繁重时 适合读取频率比写入频率高时 锁的含义 6.5 相关的设计模式 Immutable模式 Single Threaded Execution模式 Guarded Suspension模式 Before/After模式 Strategized Locking模式 6.6 延伸阅读:java.util.concurrent.locks包和Read-Write Lock模式 java.util.concurrent.locks包 使用java.util.concurrent.locks的示例程序 6.7 本章所学知识 6.8 练习题 第7章 Thread-Per-Message模式——这项工作就交给你了 7.1 Thread-Per-Message模式 7.2 示例程序 Main类 Host类 Helper类 7.3 Thread-Per-Message模式中的登场角色 7.4 拓展思路的要点 提高响应性,缩短延迟时间 适用于操作顺序没有要求时 适用于不需要返回值时 应用于服务器 调用方法+启动线程→发送消息 7.5 相关的设计模式 Future模式 Worker Thread模式 7.6 延伸阅读1:进程与线程 7.7 延伸阅读2:java.util.concurrent包和Thread-Per-Message模式 java.lang.Thread类 java.lang.Runnable接口 java.util.concurrent.ThreadFactory接口 java.util.concurrent.Executors类获取的ThreadFactory java.util.concurrent.Executor接口 java.util.concurrent.ExecutorService接口 java.util.concurrent.ScheduledExecutorService类 总结 7.8 本章所学知识 7.9 练习题 第8章 Worker Thread模式——工作没来就一直等,工作来了就干活 8.1 Worker Thread模式 8.2 示例程序 Main类 ClientThread类 Request类 Channel类 WorkerThread类 8.3 Worker Thread模式中的登场角色 8.4 拓展思路的要点 提高吞吐量 容量控制 调用与执行的分离 Runnable接口的意义 多态的Request角色 独自一人的Worker角色 8.5 相关的设计模式 Producer-Consumer模式 Thread-Per-Message模式 Command模式 Future模式 Flyweight模式 Thread-Specific Storage模式 Active Ojbect模式 8.6 延伸阅读1:Swing事件分发线程 什么是事件分发线程 事件分发线程只有一个 事件分发线程调用监听器 注册监听器的意义 事件分发线程也负责绘制界面 javax.swing.SwingUtilities类 Swing的单线程规则 8.7 延伸阅读2:java.util.concurrent包和Worker Thread模式 ThreadPoolExecutor类 通过java.util.concurrent包创建线程池 8.8 本章所学知识 8.9 练习题 第9章 Future模式——先给您提货单 9.1 Future模式 9.2 示例程序 Main类 Host类 Data接口 FutureData类 RealData类 9.3 Future模式中的登场角色 9.4 拓展思路的要点 吞吐量会提高吗 异步方法调用的“返回值” “准备返回值”和“使用返回值”的分离 变种——不让主线程久等的Future角色 变种——会发生变化的Future角色 谁会在意多线程呢?“可复用性” 回调与Future模式 9.5 相关的设计模式 Thread-Per-Message模式 Builder模式 Proxy模式 Guarded Suspension模式 Balking模式 9.6 延伸阅读:java.util.concurrent包与Future模式 java.util.concurrent包 使用了java.util.concurrent包的示例程序 9.7 本章所学知识 9.8 练习题 第 10章 Two-Phase Termination模式——先收拾房间再睡觉 10.1 Two-Phase Termination模式 10.2 示例程序 CountupThread类 Main类 10.3 Two-Phase Termination模式中的登场角色 10.4 拓展思路的要点 不能使用Thread类的stop方法 仅仅检查标志是不够的 仅仅检查中断状态是不够的 在长时间处理前检查终止请求 join方法和isAlive方法 java.util.concurrent.ExecutorService接口与Two-Phase Termination模式 要捕获程序整体的终止时 优雅地终止线程 10.5 相关的设计模式 Before/After模式 Multiphase Cancellation模式 Multi-Phase Startup模式 Balking模式 10.6 延伸阅读1:中断状态与InterruptedException异常的相互转换 中断状态→InterruptedException异常的转换 InterruptedException异常→中断状态的转换 InterruptedException异常→InterruptedException异常的转换 10.7 延伸阅读2:java.util.concurrent包与线程同步 java.util.concurrent.CountDownLatch类 java.util.concurrent.CyclicBarrier类 10.8 本章所学知识 10.9 练习题 第 11章 Thread-Specific Storage模式——一个线程一个储物柜 11.1 Thread-Specific Storage模式 11.2 关于java.lang.ThreadLocal类 java.lang.ThreadLocal就是储物间 java.lang.ThreadLocal与泛型 11.3 示例程序1:不使用Thread-Specific Storage模式的示例 Log类 Main类 11.4 示例程序2:使用了Thread-Specific Storage模式的示例 线程特有的TSLog类 Log类 ClientThread类 Main类 11.5 Thread-Specific Storage模式中的登场角色 11.6 拓展思路的要点 局部变量与java.lang.ThreadLocal类 保存线程特有的信息的位置 不必担心其他线程访问 吞吐量的提高很大程序上取决于实现方式 上下文的危险性 11.7 相关的设计模式 Singleton模式 Worker Thread模式 Single Threaded Execution模式 Proxy模式 11.8 延伸阅读:基于角色与基于任务 主体与客体 基于角色的考虑方式 基于任务的考虑方式 实际上两种方式是综合在一起的 11.9 本章所学知识 11.10 练习题 第 12章 Active Object模式——接收异步消息的主动对象 12.1 Active Object模式 12.2 示例程序1 调用方:Main类 调用方:MakerClientThread类 调用方:DisplayClientThread类 主动对象方:ActiveObject接口 主动对象方:ActiveObjectFactory类 主动对象方:Proxy类 主动对象方:SchedulerThread类 主动对象方:ActivationQueue类 主动对象方:MethodRequest类 主动对象方:MakeStringRequest类 主动对象方:DisplayStringRequest类 主动对象方:Result类 主动对象方:FutureResult类 主动对象方:RealResult类 主动对象方:Servant类 示例程序1的运行 12.3 ActiveObject模式中的登场角色 12.4 拓展思路的要点 到底做了些什么事情 运用模式时需要考虑问题的粒度 关于并发性 增加方法 Scheduler角色的作用 主动对象之间的交互 通往分布式——从跨越线程界线变为跨越计算机界线 12.5 相关的设计模式 Producer-Consumer模式 Future模式 Worker Thread模式 Thread-Specific Storage模式 12.6 延伸阅读:java.util.concurrent包与Active Object模式 类与接口 调用方:Main类 调用方:MakerClientThread类 调用方:DisplayClientThread类 主动对象方:ActiveObject接口 主动对象方:ActiveObjectFactory类 主动对象:ActiveObjectImpl类 示例程序2的运行 12.7 本章所学知识 12.8 练习题 第 13章 总结——多线程编程的模式语言 13.1 多线程编程的模式语言 模式与模式语言 13.2 Single Threaded Execution模式——能通过这座桥的只有一个人 13.3 Immutable模式——想破坏也破坏不了 13.4 Guarded Suspension模式——等我准备好哦 13.5 Balking模式——不需要就算了 13.6 Producer-Consumer模式——我来做,你来用 13.7 Read-Write Lock模式——大家一起读没问题,但读的时候不要写哦 13.8 Thread-Per-Message模式——这项工作就交给你了 13.9 Worker Thread模式——工作没来就一直等,工作来了就干活 13.10 Future模式——先给您提货单 13.11 Two-Phase Termination模式——先收拾房间再睡觉 13.12 Thread-Specific Storage模式——一个线程一个储物柜 13.13 Active Object模式——接收异步消息的主动对象 13.14 写在**后 附录 附录A 习题解答 附录B Java内存模型 附录C Java线程的优先级 附录D 线程相关的主要API 附录E java.util.concurrent包 附录F 示例程序的运行步骤 附录G 参考文献

本书通过具体的Java 程序,以浅显易懂的语言逐一说明了多线程和并发处理中常用的12 种设计模式。内容涉及线程的基础知识、线程的启动与终止、线程间的互斥处理与协作、线程的有效应用、线程的数量管理以及性能优化的注意事项等。此外,还介绍了一些多线程编程时容易出现的失误,以及多线程程序的阅读技巧等。在讲解过程中,不仅以图配文,理论结合实例,而且提供了运用模式解决具体问题的练习题和答案,帮助读者加深对多线程和并发处理的理解,并掌握其使用技巧。
...展开详情收缩
2018-01-07 上传大小:86.78MB
立即下载 开通VIP
分享
收藏 (3) 举报
关闭
img

spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip

资源所需积分/C币 当前拥有积分 当前拥有C币
5 0 0
点击完成任务获取下载码
输入下载码
为了良好体验,不建议使用迅雷下载
img

图解Java多线程设计模式.[日]结城浩(带详细书签) PDF 下载 高清 完整版

会员到期时间: 剩余下载个数: 剩余C币: 剩余积分:0
为了良好体验,不建议使用迅雷下载
VIP下载
您今日下载次数已达上限(为了良好下载体验及使用,每位用户24小时之内最多可下载20个资源)

积分不足!

资源所需积分/C币 当前拥有积分
您可以选择
开通VIP
4000万
程序员的必选
600万
绿色安全资源
现在开通
立省522元
或者
购买C币兑换积分 C币抽奖
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 4 45
为了良好体验,不建议使用迅雷下载
确认下载
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 0 0
为了良好体验,不建议使用迅雷下载
VIP和C币套餐优惠
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 4 45
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
确认下载
下载
无法举报自己的资源

兑换成功

你当前的下载分为234开始下载资源
你还不是VIP会员
开通VIP会员权限,免积分下载
立即开通

你下载资源过于频繁,请输入验证码

您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:webmaster@csdn.net!

举报

若举报审核通过,可返还被扣除的积分

  • 举报人:
  • 被举报人:
  • *类型:
    • *投诉人姓名:
    • *投诉人联系方式:
    • *版权证明:
  • *详细原因: