JAVA多线程设计模式

JAVA多线程设计模式
作 者: (日)结城浩著;博硕文化译;博硕文化译
出版社: 中国铁道出版社
丛编项:
版权说明: 本书为出版图书,暂不支持在线阅读,请支持正版图书
标 签: Java
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

暂缺《JAVA多线程设计模式》作者简介

内容简介

多线程与并发处理是程序设计好坏优劣的重要课题,本书通过浅显易懂的文字与实例来介绍与Java线程相关的设计模式理念,并且通过实际的Java程序范例和UML图示来一一解说,书中在程序代码的重要部分加上标注使读者更加容易解读。再配合众多的说明图解,无论对于初学者还是程序设计高手来说,这都是学习和认识设计模式的一本非常难得的参考书。书中包含了Java语言线程的基础内容介绍、12个重要的多线程设计模式和全书总结以及丰富的附录内容。每一章相关线程设计模式的介绍,都举一反三使学习更有效率。每章后附有习题,让读者可以温故知新,更加迅速地吸收书中精华,书中最后附上问题解答,方便读者学习验证。本书所有模式的解说中都配有相关的范例说明,相信通过本书的学习,读者一定会迅速学到自己想要掌握的知识。

图书目录

漫谈UML

UML

类图

类和层次结构的关系

接口与实现

聚合

访问控制

类间的关联性

顺序图

处理流程和对象间的协调

时序图

Introduction 1 Java语言的线程

Java语言的线程

何谓线程

明为追踪处理流程,实则追踪线程

单线程程序

多线程程序

Thread类的run方法和start方法

线程的启动

线程的启动(1)——利用Thread类的子类

线程的启动(2)——利用Runnable接口

线程的暂时停止

线程的共享互斥

synchronized方法

synchronized阻挡

线程的协调

wait set——线程的休息室

wait方法——把线程放入wait set

notif3,方法——从wait set拿出线程

notifyAll方法——从wait set拿出所有线程

wait、notify、notifyAll是Object类的方法

线程的状态移转

跟线程有关的其他话题

重点回顾

练习问题

Introduction 2 多线程程序的评量标准

多线程程序的评量标准

安全性——不损坏对象

生存性——进行必要的处理

复用性——可再利用类

性能——能快速、大量进行处理

评量标准的总结

重点回顾

练习问题

第1章 Single Threaded Execution——能通过这座桥的,只有一个人

Single Threaded Execution Pattern

范例程序1:不使用Single Threaded Execution Pattern的范例

Main类

并非线程安全(thread-safe)的Gate类

UserThread类

执行看看·果然出错了

为什么会出错呢

范例程序2:使用Single Threaded Execution Pattern的范例

线程安全的Gate类

synchronized所扮演的角色

Single Threaded Execution Pattern的所有参与者

扩展思考方向的提示

何时使用(适用性)

生命性与死锁

可重用性与继承异常

临界区的大小与执行性能

相关Pattern

Guarded Suspension Pattern(第3章)

Read-Write Lock Pattern(第6章)

Immutable Pattern(第2章)

Thread-Specific Storage Pattern(第11章)

进阶说明:关于synchronized

synchronized语法与Before/After Pattern

这个synchronized在保护什么

该以什么单位来保护呢

获取谁的锁定来保护的呢

原子的操作

long与double并不是原子的

重点回顾

练习问题

第2章 Immutable——想破坏它也没办法

Immutable Pattern

范例程序

使用Immutable Pattern的Person类

Main类

PrintPersonThread类

Immutable Pattern的所有参与者

扩展思考方向的提示

何时使用(适用性)

思考成对的mutable类与immutable类[执行性能]

为了保护类的不变性[复用性]

标准类链接库里使用到的Immutable Pattern

相关Pattern

Single Threaded Execution Pattern(第l章)

Read-Write Lock Pattern(第6章)

Flyweight Pattern(参考附录E[GoF][Yuki01])

进阶说明:final

重点回顾

练习问题

第3章 Guarded Suspension——要等到我准备好喔

Guarded Suspension Pattern

范例程序

Request类

RequestQueue类

ClientThread类

ServerThread类

Main类

java.util.LinkedList类的操作

仔细分析getRequest方法

仔细分析putRequest方法

synchronized的意义

wait与锁定

Guarded Suspension Pattern的所有参与者

扩展思考方向的提示

有条件的synchronized

多线程版的if

忘记更改状态与生命性

wait与notif3,/notif3,All的责任[复用性]

各种各样的称呼

相关Pattern

Single Threaded Execution Paaem(第1章)

Balking Pattern(第4章)

Producer-Consumer Pattern(第5章)

Future Pattern(第9章)

重点回顾

练习问题

第4章 Balking——不需要的话,就算了吧

Balking Pattern

范例程序

Data类

SaverThread类

ChangerThread类

Main类

Balking Pattern的所有参与者

扩展思考方向的提示

何时使用(适用性)

表达balk结果的方式

相关Paaem

Guarded Suspension Pattern(第3章)

Observer Pattern(参考附录E[GoF][Yuki01])

进阶说明:timeout

B alking PaRem与Guarded Suspension Pattern的中间

wait的结束是什么时候

guarded timed的实现

synchronized没有timeout,也不能中断

重点回顾

练习问题

第5章 Producer-Consumer——我来做,你来用

Producer-Consumer Pattern

范例程序

Main类

MakerThread类

EaterThread类

Table类

分析put方法

分析take方法

Producer-Consumer Pattern的所有参与者

扩展思考方向的提示

保护安全性的Channel参与者[复用性]

不能直接传递吗

Channel参与者负荷派生的问题

要以什么顺序传递Data参与者

[中间者的存在]隐含的意义

只有一个Consumer参与者时会如何

相关PaRem

Mediator PaRern(参考附录E[GoF][Yukiol])

Worker Thread Pattern(第8章)

Command Pattern(参考附录E[GoF][Yuki01])

Strategy Pattern(参考附录E[GoF][Yuki01])

进阶说明:InterruptedException异常

可能会花一些时间,但是可以取消掉

后面接着throws InterruptedException的方法

sleep方法与interrupt方法

wait方法与interrupt方法

ioin方法与interrupt方法

interrupt方法只是改变中断状态而已

isInterrupted方法——检查中断状态

Thread.interrupted方法——检查并清除中断状态

Thread类的stop方法不能使用

重点回顾

练习问题

第6章 Read-Write Lock——大家想看就看吧,不过看的时候不能写喔.

Read-Write Lock Pattern

范例程序

Main类

Data类

WriterThread类

ReaderThread类

ReadWriteLock类

执行结果

检验警戒条件

Read-Write Lock Pattern的所有参与者

扩展思考方向的提示

利用同时“读取"不会冲突的特性,提高程序的性能

适合读取操作繁重时

适合读取比写入次数频繁时

锁定的意义

相关Pattern

Immutable Pattern(第2章)。

Single Threaded Execution Pattern(第1章)

Guarded Suspension Pattern(第3章)

Before/After Pattern(参考附录E[Lea])

Strategized Locking Pattern(参考附录E[POSA2])

重点回顾

练习问题

第7章 Thread·Per-Message——这个工作交给你了

Thread-Per-Message Pattern

范例程序

Main类

Host类

Helper类

Thread-Per-Message Pattern的所有参与者一

扩展思考方向的提示

提升响应性,降低延迟时间

适合在操作顺序无所谓时使用

不需要返回值的时候

应用在服务器的制作

调用方法+启动线程一传送消息

相关Pattern

Future Pattern(第9章)

Worker Thread Pattern(第8章)

进阶说明:进程与线程

重点回顾

练习问题

第8章 Worker Thread——等到工作来,来了就工作

Worker Thread PaRern

范例程序

Main类

ClientThread类

Request类

Channel类

WorkerThread类

Worker Thread Paaern的所有参与者

扩展思考方向的提示

启动线程是繁重的操作

控制承载量

invocation与execution的分离

Runnable接口的意义

多态的Request参与者

只有一条Worker参与者

相关Pattern

Producer-Consumer Pattern(第5章)

Thread-Per-Message Pattern(第7章)

Command Pattern(参考附录E[GoF][Yuki01])

Future Pattern(第9章)

Flyweight Pattern(参考附录E[GoF][Yukiol])

Thread-Specific Storage Pattern(第11章)

Active Obiect Pattern(第12章)

进阶说明:Swing的Event-Dispatching Thread

何谓Event-Dispatching Thread

Event-dispatching thread只有一条

Event-dispatching thread会调用Listener

注册Listener的意义

Event-dispatching thread也处理画面的重绘

javax.swing.SwingUtilities类

Swing的单线程规则

重点回顾

练习问题

第9章 Future——先给您这张提货单

Future Pattern

范例程序

Main类

Host类

Data接口

FutureData类

RealData类

Future Pattern的所有参与者

扩展思考方向的提示

能够提升throughput吗

异步方法调用的“返回值”

分离“准备返回值”与“使用返回值”

变形——不让人等待的Future参与者

变形——会改变的Future参与者

谁需要考虑到多线程[复用性]

回调与Future Pattern

相关Pattern

Thread-Per-Message PaRem(第7章)

Builder Pattern(参考附录E[GoF][Yuki01])

Proxy Pattern(参考附录E[GoF][Yuki01])

Guarded Suspension Pattem(第3章)

重点回顾

Thread-Specific Storage Pattern(第11章)

Active Obiect Pattern(第12章)

进阶说明:Swing的Event-Dispatching Thread

何谓Event-Dispatching Thread

Event-dispatching thread只有一条

Event-dispatching thread会调用Listener

注册Listener的意义

Event-dispatching thread也处理画面的重绘

javax.swing.SwingUtilities类

Swing的单线程规则

重点回顾

练习问题

练习问题

第10章 Two-Phase Termination——快把玩具收拾好,去睡觉吧

Two-Phase Termination Pattern

范例程序

CountupThread类

Main类

Two-Phase Termination Patt.em的所有参与者

扩展思考方向的提示

不可以使用Thread类的stop方法

只检查标识是不够周全的

只测试中断状态也是不够的

进行繁重的处理前,先检查终止请求

join方法与isAlive方法

程序的结束与addShutdownHook方法

优雅终止的线程

相关Pattern

Before/After Pattern(参考附录E[Lea])

Multiphase Cancellation Pattern(参考附录E[Lea])

Multi-Phase Startup Pattern

Balking Pattern(第4章)

进阶说明: 中断状态与InterruptedException异常的相互转换

中断状态一InterruptedException异常的转换

InterruptedException异常一转换为中断状态

InterruptedException异常一转换为InterruptedException异常

重点回顾

练习问题

第11章 Thread·Specific Storage——每个线程的保管箱

Thread-Specific Storage Pattern.

关于java.1ang.ThreadLocal类

java.1ang.ThreadLocal是保管箱间

范例程序1:没有使用Thread-Specific Storage Pattern的范例

Log类

Main类

范例程序2:使用Thread-Specific Storage PaRem的范例

线程特有的TSLog类

Log类

ClientThread类

Main类

Thread-Specific Storage Pattern的所有参与者

扩展思考方向的提示

局部变量与java.1ang.ThreadLocal类

放置线程特有信息的地方

不必担心被其他线程访问

throughput的提升取决于实现

隐藏context的危险性

相关Pattern

Singleton Pattern(参考附录E[GoF][Yuki01])

Worker Thread Pattern(第8章)

Single Threaded Execution Pattern(第1章)

Proxy Pattern(参考附录E[GoF][Yuki01])

进阶说明:Actor-based与Task-based

主体与客体

Actor-based的思维

Task-based的思维

实际上两个开发方式是混用的

重点回顾

练习问题

第12章 Active Object——接受异步消息的主动对象

Active Object Pattern

范例程序

使用端:Main类

使用端:MakerClientThread类

使用端:DisplayClientThread类

“主动对象”端:ActiveObject接口

“主动对象”端:ActiveObjectFactory类

“主动对象”端:Proxy类

“主动对象”端:SchedulerThread类

“主动对象”端:ActivationQueue类

“主动对象”端:MethodRequest类

“主动对象”端:MakeStringRequest类

“主动对象”端:DisplayStringRequest类

“主动对象”端:Result类

“主动对象”端:FutureResult类

“主动对象”端:RealResult类

“主动对象”端:Servant类

执行范例程序

Active Obiect Pattern的所有参与者

扩展思考方向的提示

到底做了什么事呢

PaRem是否适合使用要考虑问题的规模

注意并发性

新增方法

Scheduler参与者的角色

“主动对象”之间的对话

迈向分布处理——将线程的界限移到机器的界限

相关Pattern

Producer-Consumer Pattern(第5章)

Future Pattern(第9章)

Worker Thread Pattern(第8章)

Thread-Specific Storage Pattern(第11章)

重点回顾

练习问题

总结 多线程程序设计的模式语言

多线程程序设计的模式语言

Pattern与Pattern Language

Single Threaded Execution Pattern(第1章)——能通过这座桥的,只有一个人

Immutable Pattern(第2章)——想破坏它也没办法

Guarded Suspension Pattern(第3章)——等到我准备好

Balking Pattern(第4章)——不需要的话,就算了吧

Producer-Consumer Pattern(第5章)——你来做,我来用

Read-Write Lock Pattem(第6章)——大家想看就看吧,不过看的时候不能写喔

Thread-Per-Message Pattern(第7章)——这个工作交给你了

Worker Thread Pattern(第8章)——等到工作来,来了就工作

Future Pattern(第9章)——先给您这张提货单

Two-Phase Termination Pattern(第10章)——快把玩具收拾好,去睡觉吧

Thread-Specific Storage Pattem(第11章)——每个线程的保管箱

Active Object Pattern(第12章)——接受异步消息的主动对象

尾声

附录A 练习问题的解答

附录B Java的内存模型

附录C Java线程的优先级

附录D 线程相关的主要API

附录E 参考文献