• 图解Java多线程设计模式
21年品牌 40万+商家 超1.5亿件商品

图解Java多线程设计模式

26.7 3.0折 89 九品

仅1件

天津宝坻
认证卖家担保交易快速发货售后保障

作者结城浩 著;侯振龙、杨文轩 译

出版社人民邮电出版社

出版时间2017-08

版次01

装帧平装

货号959454387221037058

上书时间2024-10-26

转转图书专营店

三年老店
已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:九品
图书标准信息
  • 作者 结城浩 著;侯振龙、杨文轩 译
  • 出版社 人民邮电出版社
  • 出版时间 2017-08
  • 版次 01
  • ISBN 9787115462749
  • 定价 89.00元
  • 装帧 平装
  • 开本 16开
  • 页数 491页
  • 字数 944千字
  • 正文语种 简体中文
  • 丛书 图灵程序设计丛书
【内容简介】
本书通过具体的Java 程序,以浅显易懂的语言逐一说明了多线程和并发处理中常用的12 种设计模式。内容涉及线程的基础知识、线程的启动与终止、线程间的互斥处理与协作、线程的有效应用、线程的数量管理以及性能优化的注意事项等。此外,还介绍了一些多线程编程时容易出现的失误,以及多线程程序的阅读技巧等。在讲解过程中,不仅以图配文,理论结合实例,而且提供了运用模式解决具体问题的练习题和答案,帮助读者加深对多线程和并发处理的理解,并掌握其使用技巧。
【作者简介】
结城浩(作者)
生于1963年,日本资-深技术作家和程序员。在编程语言、设计模式、数学、加密技术等领域,编写了很多深受欢迎的入门书。代表作有《数学女孩》系列、《程序员的数学》、《图解密码技术》等。

侯振龙(译者)
管理科学与工程专业硕士,日语一级,软件开发工程师,具有十年对日软件开发经验,现就职于某日本独资企业。

杨文轩(译者)
华中科技大学硕士,擅长Web 2.0开发,有丰富的对日开发经验。现就职于日本方正股份有限公司。译作有《图解基础设施设计模式》《C现代编程:集成开发环境、设计模式、极限编程、测试驱动开发、重构、持续集成》及《图解设计模式》。
【目录】
序章1Java线程1
I1.1Java线程2
I1.2何谓线程2
明为跟踪处理流程,实为跟踪线程2
单线程程序3
多线程程序4
Thread类的run方法和start方法5
I1.3线程的启动9
线程的启动(1)——利用Thread类的子类9
线程的启动(2)——利用Runnable接口10
I1.4线程的暂停12
I1.5线程的互斥处理13
synchronized方法14
synchronized代码块17
I1.6线程的协作18
等待队列——线程休息室19
wait方法——将线程放入等待队列19
notify方法——从等待队列中取出线程21
notifyAll方法——从等待队列中取出所有线程23
wait、notify、notifyAll是Object类的方法24
I1.7线程的状态迁移24
I1.8线程相关的其他话题26
I1.9本章所学知识26
I1.10练习题26
序章2多线程程序的评价标准31
I2.1多线程程序的评价标准32
安全性——不损坏对象32
生存性——必要的处理能够被执行32
可复用性——类可重复利用33
性能——能快速、大批量地执行处理33
评价标准总结33
I2.2本章所学知识34
I2.3练习题34
第1章Single Threaded Execution模式——能通过这座桥的只有一个人35
1.1Single Threaded Execution模式36
1.2示例程序1:不使用Single Threaded Execution模式的程序36
Main类37
非线程安全的Gate类37
UserThread类38
执行起来看看……出错了39
为什么会出错呢40
1.3示例程序2:使用Single Threaded Execution模式的程序41
线程安全的Gate类41
synchronized的作用42
1.4Single Threaded Execution模式中的登场角色43
1.5拓展思路的要点44
何时使用(可使用Single Threaded Execution模式的情况)44
生存性与死锁45
可复用性和继承反常46
临界区的大小和性能46
1.6相关的设计模式47
Guarded Suspension模式47
Read-Write Lock模式47
Immutable模式47
Thread-Specific Storage模式48
1.7延伸阅读1:关于synchronized48
synchronized语法与Before/After模式48
synchronized在保护着什么49
该以什么单位来保护呢50
使用哪个锁保护50
原子操作51
long与double的操作不是原子的51
1.8延伸阅读2:java.util.concurrent包和计数信号量52
计数信号量和Semaphore类52
使用Semaphore类的示例程序52
1.9本章所学知识55
1.10练习题55
第2章Immutable模式——想破坏也破坏不了61
2.1Immutable模式62
2.2示例程序62
使用Immutable模式的Person类62
Main类63
PrintPersonThread类63
2.3Immutable模式中的登场角色65
2.4拓展思路的要点66
何时使用(可使用Immutable模式的情况)66
考虑成对的mutable类和immutable类 [性能]66
为了确保不可变性 [可复用性]67
标准类库中用到的Immutable模式67
2.5相关的设计模式69
Single Threaded Execution模式69
Read-Write Lock模式69
Flyweight模式69
2.6延伸阅读1:final69
final的含义69
2.7延伸阅读2:集合类与多线程71
示例1:非线程安全的java.util.ArrayList类71
示例2:利用Collections.synchronizedList方法所进行的同步74
示例3:使用copy-on-write的java.util.concurrent.CopyOnWriteArrayList类75
2.8本章所学知识76
2.9练习题77
第3章Guarded Suspension模式——等我准备好哦81
3.1Guarded Suspension模式82
3.2示例程序82
Request类83
RequestQueue类84
ClientThread类85
ServerThread类85
Main类86
java.util.Queue与java.util.LinkedList的操作87
getRequest详解87
putRequest详解89
synchronized的含义89
wait与锁89
3.3Guarded Suspension模式中的登场角色90
3.4拓展思路的要点91
附加条件的synchronized91
多线程版本的if91
忘记改变状态与生存性91
wait与notify/notifyAll的责任 [可复用性]91
各种称呼91
使用java.util.concurrent.LinkedBlockingQueue的示例程序93
3.5相关的设计模式94
Single Threaded Execution模式94
Balking模式94
Producer-Consumer模式94
Future模式94
3.6本章所学知识95
3.7练习题95
第4章Balking模式——不需要就算了99
4.1Balking模式100
4.2示例程序100
Data类100
SaverThread类102
ChangerThread类102
Main类103
4.3Balking模式中的登场角色105
4.4拓展思路的要点106
何时使用(可使用Balking模式的情况)106
balk结果的表示方式107
4.5相关的设计模式107
Guarded Suspension模式107
Observer模式107
4.6延伸阅读:超时108
Balking模式和Guarded Suspension模式之间108
wait何时终止呢108
guarded timed的实现(使用wait)109
synchronized中没有超时,也不能中断110
java.util.concurrent中的超时111
4.7 本章所学知识111
4.8 练习题112
第5章Producer-Consumer模式——我来做,你来用115
5.1Producer-Consumer模式116
5.2示例程序116
Main类116
MakerThread类117
EaterThread类118
Table类118
解读put方法120
解读take方法121
5.3Producer-Consumer模式中的登场角色122
5.4拓展思路的要点123
守护安全性的Channel角色(可复用性)123
不可以直接传递吗124
Channel角色的剩余空间所导致的问题124
以什么顺序传递Data角色呢125
“存在中间角色”的意义125
Consumer角色只有一个时会怎么样呢126
5.5相关的设计模式126
Mediator模式126
Worker Thread模式126
Command模式126
Strategy模式127
5.6延伸阅读1:理解InterruptedException异常127
可能会花费时间,但可以取消127
加了throws InterruptedException的方法127
sleep方法和interrupt方法128
wait方法和interrupt方法128
join方法和interrupt方法129
interrupt方法只是改变中断状态129
isInterrupted方法——检查中断状态130
Thread.interrupted方法——检查并清除中断状态130
不可以使用Thread类的stop方法130
5.7延伸阅读2:java.util.concurrent包和Producer-Consumer模式131
java.util.concurrent包中的队列131
使用java.util.concurrent.ArrayBlockingQueue的示例程序132
使用java.util.concurrent.Exchanger类交换缓冲区133
5.8本章所学知识136
5.9练习题137
第6章Read-Write Lock模式——大家一起读没问题,但读的时候不要写哦141
6.1Read-Write Lock模式142
6.2示例程序142
Main类143
Data类143
WriterThread类146
ReaderThread类146
ReadWriteLock类147
执行起来看看149
守护条件的确认150
6.3Read-Write Lock模式中的登场角色151
6.4拓展思路的要点153
利用“读取”操作的线程之间不会冲突的特性来提高程序性能153
适合读取操作繁重时153
适合读取频率比写入频率高时153
锁的含义153
6.5相关的设计模式154
Immutable模式154
Single Threaded Execution模式154
Guarded Suspension模式154
Before/After模式154
Strategized Locking模式154
6.6延伸阅读:java.util.concurrent.locks包和Read-Write Lock模式154
java.util.concurrent.locks包154
使用java.util.concurrent.locks的示例程序155
6.7本章所学知识156
6.8练习题157
第7章Thread-Per-Message模式——这项工作就交给你了163
7.1Thread-Per-Message模式164
7.2示例程序164
Main类164
Host类165
Helper类166
7.3Thread-Per-Message模式中的登场角色168
7.4拓展思路的要点169
提高响应性,缩短延迟时间169
适用于操作顺序没有要求时169
适用于不需要返回值时169
应用于服务器169
调用方法+启动线程→发送消息170
7.5相关的设计模式170
Future模式170
Worker Thread模式170
7.6延伸阅读1:进程与线程171
7.7延伸阅读2:java.util.concurrent包和Thread-Per-Message模式171
java.lang.Thread类171
java.lang.Runnable接口172
java.util.concurrent.ThreadFactory接口173
java.util.concurrent.Executors类获取的ThreadFactory174
java.util.concurrent.Executor接口175
java.util.concurrent.ExecutorService接口176
java.util.concurrent.ScheduledExecutorService类177
总结178
7.8本章所学知识180
7.9练习题180
第8章Worker Thread模式——工作没来就一直等,工作来了就干活187
8.1Worker Thread模式188
8.2示例程序188
Main类189
ClientThread类190
Request类190
Channel类191
WorkerThread类192
8.3Worker Thread模式中的登场角色193
8.4拓展思路的要点195
提高吞吐量195
容量控制195
调用与执行的分离196
Runnable接口的意义197
多态的Request角色198
独自一人的Worker角色199
8.5相关的设计模式199
Producer-Consumer模式199
Thread-Per-Message模式199
Command模式199
Future模式199
Flyweight模式199
Thread-Specific Storage模式200
Active Ojbect模式200
8.6延伸阅读1:Swing事件分发线程200
什么是事件分发线程200
事件分发线程只有一个200
事件分发线程调用监听器201
注册监听器的意义201
事件分发线程也负责绘制界面201
javax.swing.SwingUtilities类202
Swing的单线程规则203
8.7延伸阅读2:java.util.concurrent包和Worker Thread模式204
ThreadPoolExecutor类204
通过java.util.concurrent包创建线程池205
8.8本章所学知识207
8.9练习题208
第9章Future模式——先给您提货单211
9.1Future模式212
9.2示例程序212
Main类214
Host类214
Data接口215
FutureData类216
RealData类217
9.3Future模式中的登场角色218
9.4拓展思路的要点219
吞吐量会提高吗219
异步方法调用的“返回值”220
“准备返回值”和“使用返回值”的分离220
变种——不让主线程久等的Future角色220
变种——会发生变化的Future角色221
谁会在意多线程呢?“可复用性”221
回调与Future模式221
9.5相关的设计模式222
Thread-Per-Message模式222
Builder模式222
Proxy模式222
Guarded Suspension模式222
Balking模式222
9.6延伸阅读:java.util.concurrent包与Future模式222
java.util.concurrent包222
使用了java.util.concurrent包的示例程序223
9.7本章所学知识226
9.8练习题226
第10章Two-Phase Termination模式——先收拾房间再睡觉231
10.1Two-Phase Termination模式232
10.2示例程序233
CountupThread类234
Main类236
10.3Two-Phase Termination模式中的登场角色237
10.4拓展思路的要点238
不能使用Thread类的stop方法238
仅仅检查标志是不够的239
仅仅检查中断状态是不够的239
在长时间处理前检查终止请求239
join方法和isAlive方法240
java.util.concurrent.ExecutorService接口与Two-Phase Termination模式240
要捕获程序整体的终止时241
优雅地终止线程243
10.5相关的设计模式243
Before/After模式243
Multiphase Cancellation模式243
Multi-Phase Startup模式244
Balking模式244
10.6延伸阅读1:中断状态与InterruptedException异常的相互转换244
中断状态→InterruptedException异常的转换244
InterruptedException异常→中断状态的转换245
InterruptedException异常→InterruptedException异常的转换245
10.7延伸阅读2:java.util.concurrent包与线程同步246
java.util.concurrent.CountDownLatch类246
java.util.concurrent.CyclicBarrier类249
10.8本章所学知识253
10.9练习题253
第11章Thread-Specific Storage模式——一个线程一个储物柜263
11.1Thread-Specific Storage模式264
11.2关于java.lang.ThreadLocal类264
java.lang.ThreadLocal就是储物间264
java.lang.ThreadLocal与泛型265
11.3示例程序1:不使用Thread-Specific Storage模式的示例265
Log类266
Main类266
11.4示例程序2:使用了Thread-Specific Storage模式的示例267
线程特有的TSLog类268
Log类269
ClientThread类270
Main类271
11.5Thread-Specific Storage模式中的登场角色272
11.6拓展思路的要点274
局部变量与java.lang.ThreadLocal类274
保存线程特有的信息的位置275
不必担心其他线程访问275
吞吐量的提高很大程序上取决于实现方式276
上下文的危险性276
11.7相关的设计模式277
Singleton模式277
Worker Thread模式277
Single Threaded Execution模式277
Proxy模式277
11.8 延伸阅读:基于角色与基于任务277
主体与客体277
基于角色的考虑方式278
基于任务的考虑方式278
实际上两种方式是综合在一起的279
11.9本章所学知识279
11.10练习题280
第12章Active Object模式——接收异步消息的主动对象283
12.1Active Object模式284
12.2示例程序1284
调用方:Main类287
调用方:MakerClientThread类288
调用方:DisplayClientThread类289
主动对象方:ActiveObject接口289
主动对象方:ActiveObjectFactory类290
主动对象方:Proxy类290
主动对象方:SchedulerThread类291
主动对象方:ActivationQueue类292
主动对象方:MethodRequest类293
主动对象方:MakeStringRequest类294
主动对象方:DisplayStringRequest类295
主动对象方:Result类295
主动对象方:FutureResult类296
主动对象方:RealResult类296
主动对象方:Servant类297
示例程序1的运行297
12.3ActiveObject模式中的登场角色298
12.4拓展思路的要点304
到底做了些什么事情304
运用模式时需要考虑问题的粒度304
关于并发性304
增加方法305
Scheduler角色的作用305
主动对象之间的交互306
通往分布式——从跨越线程界线变为跨越计算机界线306
12.5相关的设计模式306
Producer-Consumer模式306
Future模式307
Worker Thread模式307
Thread-Specific Storage模式307
12.6延伸阅读:java.util.concurrent包与Active Object模式307
类与接口307
调用方:Main类309
调用方:MakerClientThread类309
调用方:DisplayClientThread类310
主动对象方:ActiveObject接口311
主动对象方:ActiveObjectFactory类311
主动对象:ActiveObjectImpl类312
示例程序2的运行313
12.7本章所学知识314
12.8练习题315
第13章总结——多线程编程的模式语言321
13.1多线程编程的模式语言322
模式与模式语言322
13.2Single Threaded Execution模式
——能通过这座桥的只有一个人323
13.3 Immutable模式
——想破坏也破坏不了324
13.4 Guarded Suspension模式
——等我准备好哦325
13.5 Balking模式
——不需要就算了326
13.6 Producer-Consumer模式
——我来做,你来用327
13.7 Read-Write Lock模式
——大家一起读没问题,但读的时候不要写哦328
13.8 Thread-Per-Message模式
——这项工作就交给你了329
13.9 Worker Thread模式
——工作没来就一直等,工作来了就干活330
13.10Future模式
——先给您提货单330
13.11Two-Phase Termination模式
——先收拾房间再睡觉331
13.12Thread-Specific Storage模式
——一个线程一个储物柜332
13.13Active Object模式
——接收异步消息的主动对象333
13.14写在最后335
附录337
附录A 习题解答338
附录B Java内存模型447
附录C Java线程的优先级467
附录D 线程相关的主要API469
附录E java.util.concurrent包475
附录F 示例程序的运行步骤483
附录G 参考文献485
点击展开 点击收起

   相关推荐   

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP