图书介绍

Java多线程设计模式【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

Java多线程设计模式
  • (日)结城浩著;博硕文化译 著
  • 出版社: 北京:中国铁道出版社
  • ISBN:7113064027
  • 出版时间:2005
  • 标注页数:493页
  • 文件大小:19MB
  • 文件页数:510页
  • 主题词:JAVA语言-程序设计

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

Java多线程设计模式PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

漫谈UML1

UML2

类图2

类和层次结构的关系2

接口与实现3

聚合4

访问控制5

类间的关联性5

顺序图6

处理流程和对象间的协调6

时序图7

Introduction 1 Java语言的线程9

Java语言的线程10

何谓线程10

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

单线程程序11

多线程程序12

Thread类的run方法和start方法13

线程的启动17

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

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

线程的暂时停止21

线程的共享互斥22

synchronized方法23

synchronized阻挡27

线程的协调28

wait set——线程的休息室29

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

notify方法——从wait set拿出线程31

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

wait、notify、notifyAll是Object类的方法34

线程的状态移转35

跟线程有关的其他话题36

重点回顾36

练习问题37

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

多线程程序的评量标准42

安全性——不损坏对象42

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

复用性——可再利用类43

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

评量标准的总结44

重点回顾44

练习问题44

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

Single Threaded Execution Pattern48

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

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

Main类49

UserThread类51

执行看看……果然出错了51

为什么会出错呢53

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

线程安全的Gate类55

synchronized所扮演的角色55

Single Threaded Execution Patttern的所有参与者57

扩展思考方向的提示58

何时使用(适用性)58

生命性与死锁59

临界区的大小与执行性能60

可重用性与继承异常60

相关Pattern61

Guarded Suspension Pattern(第3章)61

Read-Write Lock Pattern(第6章)61

Immutable Pattern(第2章)61

Thread-Specific Storage Pattern(第11章)62

进阶说明:关于synchronized62

synchronized语法与Before/AfterPattern62

这个synchronized在保护什么64

该以什么单位来保护呢64

原子的操作65

long与double并不是原子的65

获取谁的锁定来保护的呢65

重点回顾67

练习问题67

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

Immutable Pattern76

范例程序76

使用Immutable Pattern的Person类76

Main类77

PrintPersonThread类78

Immutable Pattern的所有参与者80

何时使用(适用性)81

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

扩展思考方向的提示81

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

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

相关Pattern84

Single Threaded Execution Pattern(第1章)84

Read-Write Lock Pattern(第6章)84

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

进阶说明:final85

重点回顾86

练习问题86

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

Guarded Suspension Pattern94

范例程序94

Request类95

RequestQueue类96

ClientThread类97

ServerThread类98

Main类99

java.util.LinkedList类的操作100

仔细分析getRequest方法100

仔细分析putRequest方法102

synchronized的意义102

wait与锁定103

Guarded SuspensionPattern的所有参与者103

多线程版的if104

有条件的synchronized104

扩展思考方向的提示104

忘记更改状态与生命性105

wait与notify/notifyAll的责任[复用性]105

各种各样的称呼105

相关Pattern107

Single Threaded Execution Pattern(第1章)107

Balking Pattern(第4章)107

Producer-Consumer Pattern(第5章)107

Future Pattern(第9章)107

重点回顾107

练习问题108

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

范例程序116

Balking Pattern116

Data类117

SaverThread类119

ChangerThread类119

Main类120

Balking Pattern的所有参与者122

扩展思考方向的提示123

何时使用(适用性)123

表达balk结果的方式124

进阶说明:timeout125

wait的结束是什么时候125

Balking Pattern与Guarded Suspension Pattern的中间125

Guarded Suspension Pattern(第3章)125

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

相关Pattern125

guarded timed的实现126

synchronized没有timeout,也不能中断129

重点回顾129

练习问题130

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

Producer-Consumer Pattern136

范例程序136

MakerThread类137

Main类137

EaterThread类138

Table类139

分析put方法141

分析take方法142

Producer-ConsumerPattern的所有参与者144

扩展思考方向的提示145

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

不能直接传递吗145

Channel参与者负荷派生的问题146

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

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

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

相关Pattern148

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

Worker Thread Pattern(第8章)149

CommandPattern(参考附录E[GoF][Yuki01])149

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

进阶说明:InterruptedException异常149

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

后面接着throws InterruptedException的方法149

sleep方法与interrupt方法150

join方法与interrupt方法151

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

wait方法与interrupt方法151

isInterrupted方法——检查中断状态152

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

Thread类的stop方法不能使用153

重点回顾153

练习问题154

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

Read-Write Lock Pattern160

范例程序160

Main类161

Data类161

WriterThread类164

ReaderThread类165

ReadWriteLock类166

执行结果169

检验警戒条件170

Read-Write Lock Pattern的所有参与者171

扩展思考方向的提示172

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

适合读取操作繁重时172

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

锁定的意义173

相关Pattern173

Immutable Pattern(第2章)。173

重点回顾174

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

Single Threaded Execution Pattern(第1章)174

Guarded Suspension Pattern(第3章)174

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

练习问题175

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

Thread-Per-Message Pattern182

范例程序182

Main类183

Host类183

Helper类184

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

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

扩展思考方向的提示188

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

不需要返回值的时候189

应用在服务器的制作189

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

相关Pattern190

Future Pattern(第9章)190

Worker Thread Pattern(第8章)190

进阶说明:进程与线程190

重点回顾191

练习问题192

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

范例程序200

Worker Thread Pattern200

Main类202

ClientThread类202

Request类203

Channel类204

WorkerThread类205

Worker Thread Pattern的所有参与者207

启动线程是繁重的操作209

控制承载量209

扩展思考方向的提示209

invocation与execution的分离210

Runnable接口的意义211

多态的Request参与者211

只有一条Worker参与者212

相关Pattern213

Producer-ConsumerPattern(第5章)213

Thread-Per-Message Pattern(第7章)213

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

Future Pattern(第9章)213

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

何谓Event-Dispatching Thread214

进阶说明:Swing的Event-Dispatching Thread214

Thread-Specific Storage Pattern(第11章)214

Active Object Pattern(第12章)214

Event-dispatching thread只有一条215

Event-dispatching thread会调用Listener215

注册Listener的意义217

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

javax.swing.SwingUtilities类217

Swing的单线程规则218

重点回顾219

练习问题219

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

范例程序226

Future Pattern226

Main类228

Host类229

Data接口231

FutureData类231

RealData类232

Future Pattern的所有参与者234

扩展思考方向的提示236

能够提升throughput吗236

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

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

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

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

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

回调与Future Pattern238

相关Pattern239

Thread-Per-Message Pattern(第7章)239

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

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

Guarded Suspension Pattern(第3章)239

重点回顾239

练习问题240

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

Two-Phase Termination Pattern248

范例程序249

CountupThread类250

Main类252

Two-Phase Termination Pattern的所有参与者254

扩展思考方向的提示255

不可以使用Thread类的stop方法255

只检查标识是不够周全的256

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

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

join方法与isAlive方法257

程序的结束与addShutdownHook方法257

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

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

优雅终止的线程259

相关Pattern259

Multi-Phase StartupPattern260

Balking Pattern(第4章)260

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

中断状态→InterruptedException异常的转换260

InterruptedException异常→转换为中断状态261

InterruptedException异常→转换为InterruptedException异常262

重点回顾262

练习问题263

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

java.lang.ThreadLocal是保管箱间274

Thread-Specific StoragePattern274

关于java.lang.ThreadLocal类274

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

Log类276

Main类277

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

线程特有的TSLog类278

Log类280

ClientThread类281

Main类282

Thread-Specific Storage Pattern的所有参与者283

局部变量与java.lang.ThreadLocal类286

扩展思考方向的提示286

放置线程特有信息的地方287

不必担心被其他线程访问288

throughput的提升取决于实现288

隐藏context的危险性289

相关Pattern289

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

WorkerThread Pattern(第8章)290

Single Threaded Execution Pattern(第1章)290

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

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

主体与客体290

Task-based的思维291

Actor-based的思维291

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

重点回顾292

练习问题293

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

Active Object Pattern296

范例程序296

使用端:Main类298

使用端:MakerClientThread类299

使用端:DisplayClientThread类300

“主动对象”端:ActiveObject接口300

“主动对象”端:ActiveObjectFactory类301

“主动对象”端:Proxy类302

“主动对象”端:SchedulerThread类303

“主动对象”端:ActivationQueue类304

“主动对象”端:MethodRequest类305

“主动对象”端:MakeStringRequest类306

“主动对象”端:DisplayStringRequest类307

“主动对象”端:Result类307

“主动对象”端:FutureResult类308

“主动对象”端:RealResult类309

“主动对象”端:Servant类309

执行范例程序310

Active ObjectPattern的所有参与者311

扩展思考方向的提示314

到底做了什么事呢314

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

注意并发性317

新增方法317

Scheduler参与者的角色318

“主动对象”之间的对话318

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

重点回顾319

Thread-Specific Storage Pattern(第11章)319

Worker Thread Pattern(第8章)319

Future Pattern(第9章)319

Producer-Consumer Pattern(第5章)319

相关Pattern319

练习问题320

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

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

Pattern与Pattern Language326

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

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

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

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

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

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

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

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

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

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

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

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

尾声340

附录A 练习问题的解答341

附录B Java的内存模型461

附录C Java线程的优先级475

附录D 线程相关的主要API479

附录E 参考文献487

热门推荐