新書推薦:
《
怪谈百物语:不能开的门(“日本文学史上的奇迹”宫部美雪重要代表作!日本妖怪物语集大成之作,系列累销突破200万册!)
》
售價:HK$
65.0
《
罗马政治观念中的自由
》
售價:HK$
50.4
《
中国王朝内争实录:宠位厮杀
》
售價:HK$
61.6
《
凡事发生皆有利于我(这是一本读了之后会让人运气变好的书”治愈无数读者的心理自助经典)
》
售價:HK$
44.6
《
未来特工局
》
售價:HK$
55.8
《
高术莫用(十周年纪念版 逝去的武林续篇 薛颠传世之作 武学尊师李仲轩家世 凸显京津地区一支世家的百年沉浮)
》
售價:HK$
54.9
《
英国简史(刘金源教授作品)
》
售價:HK$
98.6
《
便宜货:廉价商品与美国消费社会的形成
》
售價:HK$
77.3
|
編輯推薦: |
《Java高并发编程详解:多线程与架构设计》的姊妹篇!外企数据服务部技术专家撰写,分享多年Java服务器、大数据程序开发架构经验。
实战性强,从底层原理总结和归纳各个技术细节,结合真实的案例深入分析微基准测试、性能度量、Java高并发类库的原理及应用。
|
內容簡介: |
本书分了四个部分,第壹部分详细讲解JDK高并发核心库,包括JDK1.8、JDK1.9对高并发的支持。第二部分主要讲解Actor模型的实现Akka是如何应用在高并发编程环境中的。第三部分系统讲解RxJava以及Reactive的高并发编程模型。第四部分站拾遗补漏介绍Google Guava、Disruptor等开源框架提供的高并发解决方案。
|
關於作者: |
汪文君
某外企数据服务中心技术经理、技术专家,目前专注于实时数据data pipeline平台的构建与架构,以及部门内部DevOps的建设。对团队管理、项目管理有着自己独到的见解。在加入该公司之前曾拥有多年的移动网关通信研发经验,以及移动互联网、云计算、B2C电子商务平台等架构的开发经验。热衷于技术分享,善于锤炼技术细节,目前已录制20余套技术视频,在互联网上得到广泛传播。另著有《Java高并发编程详解:多线程与架构设计》,该书被机械工业出版社华章公司评选为2018年度十佳图书之一。
|
目錄:
|
推荐序一
推荐序二
推荐序三
推荐序四
前言
第1章 JMH1
1.1 JMH简介1
1.2 JMH快速入门1
1.2.1 用main方法进行测试1
1.2.2 用JMH进行微基准测试3
1.3 JMH的基本用法6
1.3.1 @Benchmark标记基准测试方法7
1.3.2 Warmup以及Measurement8
1.3.3 四大BenchmarkMode10
1.3.4 OutputTimeUnit14
1.3.5 三大State的使用14
1.3.6 @Param的妙用19
1.3.7 JMH的测试套件(Fixture)23
1.3.8 CompilerControl26
1.4 编写正确的微基准测试以及高级用法27
1.4.1 编写正确的微基准测试用例28
1.4.2 一些高级的用法38
1.5 JMH的Profiler45
1.5.1 StackProfiler45
1.5.2 GcProfiler47
1.5.3 ClassLoaderProfiler51
1.5.4 CompilerProfiler54
1.6 本章总结56
第2章 Java并发包之原子类型详解57
2.1 AtomicInteger详解58
2.1.1 性能测试对比58
2.1.2 AtomicInteger的基本用法61
2.1.3 AtomicInteger内幕66
2.1.4 AtomicInteger总结68
2.2 AtomicBoolean详解69
2.2.1 AtomicBoolean的基本用法69
2.2.2 AtomicBoolean内幕71
2.2.3 Try Lock显式锁的实现71
2.2.4 AtomicBoolean总结74
2.3 AtomicLong详解74
2.4 AtomicReference详解76
2.4.1 AtomicReference的应用场景77
2.4.2 AtomicReference的基本用法83
2.4.3 AtomicReference的内幕84
2.4.4 AtomicReference总结86
2.5 AtomicStampedReference详解86
2.5.1 CAS算法ABA问题86
2.5.2 AtomicStampedReference详解87
2.5.3 AtomicStampedReference总结89
2.6 AtomicArray详解89
2.7 AtomicFieldUpdater详解90
2.7.1 原子性更新对象属性90
2.7.2 注意事项91
2.7.3 AtomicFieldUpdater总结93
2.8 sun.misc.Unsafe详解93
2.8.1 如何获取Unsafe94
2.8.2 JNI、Java和CC++混合编程95
2.8.3 危险的Unsafe98
2.8.4 sun.misc.Unsafe总结100
2.9 本章总结100
第3章 Java并发包之工具类详解 102
3.1 CountDownLatch工具详解102
3.1.1 等待所有子任务结束103
3.1.2 CountDownLatch的其他方法及总结106
3.2 CyclicBarrier工具详解107
3.2.1 等待所有子任务结束107
3.2.2 CyclicBarrier的循环特性110
3.2.3 CyclicBarrier的其他方法以及总结114
3.2.4 CyclicBarrier VS. CountDownLatch116
3.3 Exchanger工具详解116
3.3.1 一对线程间的数据交换116
3.3.2 Exchanger的方法详解121
3.3.3 Exchanger总结123
3.4 Semaphore工具详解124
3.4.1 Semaphore限制同时在线的用户数量124
3.4.2 使用Semaphore定义try lock127
3.4.3 Semaphore其他方法详解129
3.4.4 扩展Semaphore增强release135
3.4.5 Semaphore总结138
3.5 Phaser工具详解138
3.5.1 Phaser的基本用法138
3.5.2 Phase(阶段)以及Phaser方法详解144
3.5.3 Phaser层级关系148
3.5.4 Phaser总结149
3.6 Lock&ReentrantLock详解150
3.6.1 Lock及ReentrantLock方法详解150
3.6.2 正确使用显式锁Lock152
3.6.3 ReentrantLock VS. Synchronized关键字158
3.6.4 显式锁Lock总结164
3.7 ReadWriteLock&ReentrantRead-WriteLock详解165
3.7.1 读写锁的基本使用方法165
3.7.2 读写锁的方法167
3.7.3 基准测试性能对比167
3.7.4 读写锁总结170
3.8 Condition详解171
3.8.1 初识Condition171
3.8.2 Condition接口方法详解174
3.8.3 使用Condition之生产者消费者177
3.8.4 Condition总结181
3.9 StampedLock详解181
3.9.1 读写锁的饥饿写问题182
3.9.2 StampedLock的使用183
3.9.3 与其他锁的性能对比185
3.9.4 StampedLock总结191
3.10 Guava之Monitor详解192
3.10.1 Monitor及Guard192
3.10.2 Monitor的其他方法194
3.10.3 Monitor总结194
3.11 Guava之RateLimiter详解194
3.11.1 RateLimiter的基本使用195
3.11.2 RateLimiter的限流操作——漏桶算法196
3.11.3 令牌环桶算法201
3.11.4 RateLimiter总结204
3.12 本章总结204
第4章 Java并发包之并发容器详解205
4.1 链表206
4.1.1 基本的链表206
4.1.2 优先级链表210
4.1.3 跳表(SkipList)213
4.1.4 链表总结221
4.2 BlockingQueue(阻塞队列)221
4.2.1 ArrayBlockingQueue222
4.2.2 PriorityBlockingQueue226
4.2.3 LinkedBlockingQueue228
4.2.4 DelayQueue228
4.2.5 SynchronousQueue231
4.2.6 LinkedBlockingDeque233
4.2.7 LinkedTransferQueue234
4.2.8 BlockingQueue总结236
4.3 ConcurrentQueue(并发队列)237
4.3.1 并发队列的性能239
4.3.2 并发队列在使用中需要注意的问题241
4.3.3 并发队列总结245
4.4 ConcurrentMap(并发映射)245
4.4.1 ConcurrentHashMap简介245
4.4.2 ConcurrentSkipListMap简介247
4.4.3 并发映射总结247
4.5 写时拷贝算法(Copy On Write)248
4.5.1 CopyOnWrite读实现操作分析249
4.5.2 CopyOnWrite写实现操作分析249
4.5.3 CopyOnWrite总结250
4.6 高并发无锁(Lock Free)数据结构的实现250
4.6.1 高并发无锁链表的实现250
4.6.2 Lock Free数据结构的测试253
4.6.3 本节总结255
4.7 本章总结255
第5章 Java并发包之ExecutorService详解256
5.1 Executor&ExecutorService详解256
5.1.1 ThreadPoolExecutor详解257
5.1.2 ScheduledExecutorService详解265
5.1.3 关闭ExecutorService271
5.1.4 Executors详解273
5.1.5 ExecutorService总结276
5.2 Future和Callback277
5.2.1 Future详解277
5.2.2 ExecutorService与Future280
5.2.3 Future的不足之处282
5.2.4 Google Guava的Future282
5.2.5 Future总结284
5.3 ForkJoinPool 详解284
5.3.1 ForkJoin Framework介绍284
5.3.2 ForkJoinTask详解285
5.3.3 ForkJoinPool总结289
5.4 CompletionService详解289
5.4.1 ExecutorService执行批量任务的缺陷289
5.4.2 CompletionService详解291
5.4.3 CompletionService总结294
5.5 CompletableFuture详解294
5.5.1 CompletableFuture的基本用法294
5.5.2 任务的异步运行296
5.5.3 异步任务链296
5.5.4 合并多个Future298
5.5.5 多Future的并行计算299
5.5.6 错误处理299
5.5.7 JDK 9对CompletableFuture的进一步支持300
5.5.8 CompletableFuture总结300
5.6 本章总结301
第6章 Java Streams详解302
6.1 Stream介绍及其基本操作302
6.1.1 如何创建Stream303
6.1.2 Stream之Intermediate操作306
6.1.3 Stream之Terminal操作312
6.1.4 NumericStream详解317
6.1.5 Stream总结320
6.2 Collector在Stream中的使用320
6.2.1 初识Collector321
6.2.2 Collectors用法详解324
6.2.3 自定义Collector335
6.2.4 Collector总结336
6.3 Parallel Stream详解337
6.3.1 并行流Parallel Stream337
6.3.2 Spliterator 详解340
6.3.3 Spliterator总结343
6.4 本章总结344
第7章 Metrics(Powerful Toolkit For Measure)345
7.1 Metrics快速入门345
7.1.1 如何监控度量应用程序345
7.1.2 Metrics环境搭建346
7.2 五大Metric详解346
7.2.1 Meter347
7.2.2 Gauge349
7.2.3 Counter360
7.2.4 Histogram362
7.2.5 Timer370
7.3 Reporter详解372
7.3.1 ConsoleReporter373
7.3.2 LogReporter376
7.3.3 JMXReporter378
7.3.4 CsvReporter379
7.4 Metrics Plugins380
7.4.1 Health Check381
7.4.2 JVM Instrumentation386
7.5 深入Metrics源码387
7.5.1 MetricRegistry如何工作388
7.5.2 Reporter如何工作392
7.5.3 拾遗补漏394
7.6 本章总结396
|
內容試閱:
|
第1章 JMH1
1.1 JMH简介1
1.2 JMH快速入门1
1.2.1 用main方法进行测试1
1.2.2 用JMH进行微基准测试3
1.3 JMH的基本用法6
1.3.1 @Benchmark标记基准测试方法7
1.3.2 Warmup以及Measurement8
1.3.3 四大BenchmarkMode10推荐序一
推荐序二
推荐序三
推荐序四
前言
第1章 JMH1
1.1 JMH简介1
1.2 JMH快速入门1
1.2.1 用main方法进行测试1
1.2.2 用JMH进行微基准测试3
1.3 JMH的基本用法6
1.3.1 @Benchmark标记基准测试方法7
1.3.2 Warmup以及Measurement8
1.3.3 四大BenchmarkMode10
1.3.4 OutputTimeUnit14
1.3.5 三大State的使用14
1.3.6 @Param的妙用19
1.3.7 JMH的测试套件(Fixture)23
1.3.8 CompilerControl26
1.4 编写正确的微基准测试以及高级用法27
1.4.1 编写正确的微基准测试用例28
1.4.2 一些高级的用法38
1.5 JMH的Profiler45
1.5.1 StackProfiler45
1.5.2 GcProfiler47
1.5.3 ClassLoaderProfiler51
1.5.4 CompilerProfiler54
1.6 本章总结56
第2章 Java并发包之原子类型详解57
2.1 AtomicInteger详解58
2.1.1 性能测试对比58
2.1.2 AtomicInteger的基本用法61
2.1.3 AtomicInteger内幕66
2.1.4 AtomicInteger总结68
2.2 AtomicBoolean详解69
2.2.1 AtomicBoolean的基本用法69
2.2.2 AtomicBoolean内幕71
2.2.3 Try Lock显式锁的实现71
2.2.4 AtomicBoolean总结74
2.3 AtomicLong详解74
2.4 AtomicReference详解76
2.4.1 AtomicReference的应用场景77
2.4.2 AtomicReference的基本用法83
2.4.3 AtomicReference的内幕84
2.4.4 AtomicReference总结86
2.5 AtomicStampedReference详解86
2.5.1 CAS算法ABA问题86
2.5.2 AtomicStampedReference详解87
2.5.3 AtomicStampedReference总结89
2.6 AtomicArray详解89
2.7 AtomicFieldUpdater详解90
2.7.1 原子性更新对象属性90
2.7.2 注意事项91
2.7.3 AtomicFieldUpdater总结93
2.8 sun.misc.Unsafe详解93
2.8.1 如何获取Unsafe94
2.8.2 JNI、Java和CC++混合编程95
2.8.3 危险的Unsafe98
2.8.4 sun.misc.Unsafe总结100
2.9 本章总结100
第3章 Java并发包之工具类详解 102
3.1 CountDownLatch工具详解102
3.1.1 等待所有子任务结束103
3.1.2 CountDownLatch的其他方法及总结106
3.2 CyclicBarrier工具详解107
3.2.1 等待所有子任务结束107
3.2.2 CyclicBarrier的循环特性110
3.2.3 CyclicBarrier的其他方法以及总结114
3.2.4 CyclicBarrier VS. CountDownLatch116
3.3 Exchanger工具详解116
3.3.1 一对线程间的数据交换116
3.3.2 Exchanger的方法详解121
3.3.3 Exchanger总结123
3.4 Semaphore工具详解124
3.4.1 Semaphore限制同时在线的用户数量124
3.4.2 使用Semaphore定义try lock127
3.4.3 Semaphore其他方法详解129
3.4.4 扩展Semaphore增强release135
3.4.5 Semaphore总结138
3.5 Phaser工具详解138
3.5.1 Phaser的基本用法138
3.5.2 Phase(阶段)以及Phaser方法详解144
3.5.3 Phaser层级关系148
3.5.4 Phaser总结149
3.6 Lock&ReentrantLock详解150
3.6.1 Lock及ReentrantLock方法详解150
3.6.2 正确使用显式锁Lock152
3.6.3 ReentrantLock VS. Synchronized关键字158
3.6.4 显式锁Lock总结164
3.7 ReadWriteLock&ReentrantRead-WriteLock详解165
3.7.1 读写锁的基本使用方法165
3.7.2 读写锁的方法167
3.7.3 基准测试性能对比167
3.7.4 读写锁总结170
3.8 Condition详解171
3.8.1 初识Condition171
3.8.2 Condition接口方法详解174
3.8.3 使用Condition之生产者消费者177
3.8.4 Condition总结181
3.9 StampedLock详解181
3.9.1 读写锁的饥饿写问题182
3.9.2 StampedLock的使用183
3.9.3 与其他锁的性能对比185
3.9.4 StampedLock总结191
3.10 Guava之Monitor详解192
3.10.1 Monitor及Guard192
3.10.2 Monitor的其他方法194
3.10.3 Monitor总结194
3.11 Guava之RateLimiter详解194
3.11.1 RateLimiter的基本使用195
3.11.2 RateLimiter的限流操作——漏桶算法196
3.11.3 令牌环桶算法201
3.11.4 RateLimiter总结204
3.12 本章总结204
第4章 Java并发包之并发容器详解205
4.1 链表206
4.1.1 基本的链表206
4.1.2 优先级链表210
4.1.3 跳表(SkipList)213
4.1.4 链表总结221
4.2 BlockingQueue(阻塞队列)221
4.2.1 ArrayBlockingQueue222
4.2.2 PriorityBlockingQueue226
4.2.3 LinkedBlockingQueue228
4.2.4 DelayQueue228
4.2.5 SynchronousQueue231
4.2.6 LinkedBlockingDeque233
4.2.7 LinkedTransferQueue234
4.2.8 BlockingQueue总结236
4.3 ConcurrentQueue(并发队列)237
4.3.1 并发队列的性能239
4.3.2 并发队列在使用中需要注意的问题241
4.3.3 并发队列总结245
4.4 ConcurrentMap(并发映射)245
4.4.1 ConcurrentHashMap简介245
4.4.2 ConcurrentSkipListMap简介247
4.4.3 并发映射总结247
4.5 写时拷贝算法(Copy On Write)248
4.5.1 CopyOnWrite读实现操作分析249
4.5.2 CopyOnWrite写实现操作分析249
4.5.3 CopyOnWrite总结250
4.6 高并发无锁(Lock Free)数据结构的实现250
4.6.1 高并发无锁链表的实现250
4.6.2 Lock Free数据结构的测试253
4.6.3 本节总结255
4.7 本章总结255
第5章 Java并发包之ExecutorService详解256
5.1 Executor&ExecutorService详解256
5.1.1 ThreadPoolExecutor详解257
5.1.2 ScheduledExecutorService详解265
5.1.3 关闭ExecutorService271
5.1.4 Executors详解273
5.1.5 ExecutorService总结276
5.2 Future和Callback277
5.2.1 Future详解277
5.2.2 ExecutorService与Future280
5.2.3 Future的不足之处282
5.2.4 Google Guava的Future282
5.2.5 Future总结284
5.3 ForkJoinPool 详解284
5.3.1 ForkJoin Framework介绍284
5.3.2 ForkJoinTask详解285
5.3.3 ForkJoinPool总结289
5.4 CompletionService详解289
5.4.1 ExecutorService执行批量任务的缺陷289
5.4.2 CompletionService详解291
5.4.3 CompletionService总结294
5.5 CompletableFuture详解294
5.5.1 CompletableFuture的基本用法294
5.5.2 任务的异步运行296
5.5.3 异步任务链296
5.5.4 合并多个Future298
5.5.5 多Future的并行计算299
5.5.6 错误处理299
5.5.7 JDK 9对CompletableFuture的进一步支持300
5.5.8 CompletableFuture总结300
5.6 本章总结301
第6章 Java Streams详解302
6.1 Stream介绍及其基本操作302
6.1.1 如何创建Stream303
6.1.2 Stream之Intermediate操作306
6.1.3 Stream之Terminal操作312
6.1.4 NumericStream详解317
6.1.5 Stream总结320
6.2 Collector在Stream中的使用320
6.2.1 初识Collector321
6.2.2 Collectors用法详解324
6.2.3 自定义Collector335
6.2.4 Collector总结336
6.3 Parallel Stream详解337
6.3.1 并行流Parallel Stream337
6.3.2 Spliterator 详解340
6.3.3 Spliterator总结343
6.4 本章总结344
第7章 Metrics(Powerful Toolkit For Measure)345
7.1 Metrics快速入门345
7.1.1 如何监控度量应用程序345
7.1.2 Metrics环境搭建346
7.2 五大Metric详解346
7.2.1 Meter347
7.2.2 Gauge349
7.2.3 Counter360
7.2.4 Histogram362
7.2.5 Timer370
7.3 Reporter详解372
7.3.1 ConsoleReporter373
7.3.2 LogReporter376
7.3.3 JMXReporter378
7.3.4 CsvReporter379
7.4 Metrics Plugins380
7.4.1 Health Check381
7.4.2 JVM Instrumentation386
7.5 深入Metrics源码387
7.5.1 MetricRegistry如何工作388
7.5.2 Reporter如何工作392
7.5.3 拾遗补漏394
7.6 本章总结396
|
|