×
暂无评论
图文详情
  • ISBN:9787522612669
  • 装帧:平装-胶订
  • 册数:暂无
  • 重量:暂无
  • 开本:16开
  • 页数:384
  • 出版时间:2022-12-01
  • 条形码:9787522612669 ; 978-7-5226-1266-9

本书特色

本书适用于对Java基础知识有一定的掌握,渴望深入学习Java并发进阶知识的开发者;也适用于渴求成功进入大型互联网公司的开发者;还适用于对Java并发以及并发组件设计模式感兴趣的开发者。

内容简介

本书系统化地分析和介绍了Java并发领域,全书共12章,可分为四个部分。**部分为并发概述(第1章),这部分介绍并发的发展历史,激发读者对并发学习的热情。第二部分为Java基础原理(第2~3章),这部分介绍了并发模型的基础理论知识。第三部分为并发工具(第4~7章),这部分不仅从源码实现的原理上分析j.u.c包中提供的Java并发工具,还对组件的设计方式进行了探索。第四部分为Java实践(第8~12章),这部分深入浅出地分析了开源常见的并发框架,学习这部分知识可进一步提升并发编程的效率。本书适用于对Java基础有一定的掌握,渴望深入学习Java并发进阶知识的开发者;也适用于渴求成功进入大型互联网公司的开发者;还适用于对Java并发以及并发组件设计模式感兴趣的开发者。

目录

目录 第1章 走近并发 1 1.1 并发历史 1 1.1.1 摩尔定律 1 1.1.2 多核计算的趋势 3 1.2 并发编程基础 5 1.2.1 并发编程的使用场景 5 1.2.2 并发的优缺点 9 1.2.3 常见概念解析 14 1.3 线程的生命周期 18 1.3.1 使用API新建线程 18 1.3.2 操作系统中的线程模型 19 1.3.3 Java线程实现的底层原理剖析 23 1.3.4 线程的状态转换 34 1.3.5 线程的基本操作 36 1.4 Daemon守护线程 40 1.5 线程组 41 1.6 本章小结 42 第2章 JMM内存模型以及happens-before规则 43 2.1 JMM内存模型 43 2.1.1 JMM简介 43 2.1.2 JMM共享内存的通信机制 44 2.2 happens-before规则 45 2.2.1 重排序 45 2.2.2 as-if-serial语义 46 2.2.3 happens-before 47 2.3 本章小结 49 第3章 Java并发关键字 52 3.1 深入理解synchronized 52 3.1.1 synchronized简介 52 3.1.2 synchronized实现原理 53 3.1.3 CAS操作 59 3.1.4 Java对象头 60 3.1.5 synchronized优化 65 3.1.6 具体示例 68 3.2 volatile解析 68 3.2.1 volatile简介 68 3.2.2 volatile实现原理 69 3.2.3 volatile的happens-before关系 69 3.2.4 volatile的内存语义 71 3.3 三大性质总结: 原子性、有序性和可见性 72 3.3.1 原子性 72 3.3.2 有序性 74 3.3.3 可见性 76 3.4 本章小结 76 第4章 解密Lock体系 77 4.1 初识Lock体系与AbstractQueuedSynchronizer 77 4.1.1 concurrent体系 77 4.1.2 Lock简介 79 4.1.3 自定义同步组件实现示例 82 4.2 深入理解AbstractQueuedSynchronizer 86 4.2.1 AbstractQueuedSynchronizer简介 86 4.2.2 同步队列 86 4.2.3 独占锁 89 4.2.4 共享锁 99 4.3 深入理解ReentrantLock 104 4.3.1 重入性的实现原理 104 4.3.2 公平锁与非公平锁 106 4.3.3 公平锁与非公平锁的比较 107 4.4 深入理解ReentrantReadWriteLock 107 4.4.1 读写锁的介绍 107 4.4.2 写锁详解 108 4.4.3 读锁详解 110 4.4.4 锁降级 112 4.5 condition等待通知机制 115 4.5.1 condition简介 115 4.5.2 condition实现原理分析 115 4.5.3 signal/signalAll实现原理 121 4.6 LockSupport工具 125 4.6.1 LockSupport简介 125 4.6.2 LockSupport中的方法 125 4.6.3 使用示例 127 4.7 本章小结 127 第5章 深入解析并发容器 129 5.1 深入解析ConcurrentHashMap 129 5.1.1 ConcurrentHashMap简介 129 5.1.2 关键属性及类 130 5.1.3 CAS相关操作 132 5.1.4 深入分析核心方法 132 5.1.5 总结 147 5.2 CopyOnWriteArrayList详解 147 5.2.1 CopyOnWriteArrayList简介 147 5.2.2 COW的设计思想 148 5.2.3 CopyOnWriteArrayList实现原理 148 5.2.4 总结 151 5.3 ConcurrentLinkedQueue解析 151 5.3.1 ConcurrentLinkedQueue简介 151 5.3.2 offer()方法 153 5.3.3 poll()方法 159 5.3.4 HOPS的设计 163 5.4 ThreadLocal分析 164 5.4.1 ThreadLocal简介 164 5.4.2 ThreadLocal实现原理 165 5.4.3 ThreadLocalMap详解 167 5.4.4 ThreadLocal的使用场景 174 5.5 ThreadLocal内存泄漏问题分析 176 5.5.1 造成内存泄漏的原因 176 5.5.2 已经做出改进 177 5.5.3 使用弱引用的原因 188 5.5.4 Thread.exit() 188 5.5.5 ThreadLocal*佳实践 189 5.6 阻塞队列 189 5.6.1 阻塞队列简介 189 5.6.2 基本操作 190 5.6.3 常用的BlockingQueue 190 5.7 ArrayBlockingQueue与LinkedBlockingQueue 193 5.7.1 ArrayBlockingQueue简介 193 5.7.2 ArrayBlockingQueue实现原理 194 5.7.3 LinkedBlockingQueue实现原理 197 5.7.4 ArrayBlockingQueue与LinkedBlockingQueue的比较 199 5.7.5 LinkedBlockingQueue与ConcurrentLinkedQueue的比较 200 5.8 本章小结 200 第6章 Executor体系 204 6.1 线程池之ThreadPoolExecutor 204 6.1.1 线程池简介 204 6.1.2 线程池的工作原理 204 6.1.3 线程池的创建 205 6.1.4 线程池的关闭 208 6.1.5 合理配置线程池参数 208 6.2 线程池之ScheduledThreadPoolExecutor 209 6.2.1 ScheduledThreadPoolExecutor简介 209 6.2.2 可周期性执行的任务ScheduledFutureTask 211 6.2.3 DelayedWorkQueue 212 6.2.4 ScheduledThreadPoolExecutor的执行过程 213 6.3 FutureTask 215 6.3.1 FutureTask简介 215 6.3.2 FutureTask的使用 216 6.4 本章小结 217 第7章 原子操作类 218 7.1 CAS比较与交换 218 7.1.1 CAS与synchronized的性能对比 219 7.1.2 CAS的问题 221 7.1.3 Unsafe 222 7.2 Atomic原子操作类 223 7.2.1 原子更新基本类型 224 7.2.2 原子更新数组类型 227 7.2.3 原子更新引用类型 230 7.2.4 原子更新字段类型 232 7.3 累加器 236 7.3.1 LongAdder概述 236 7.3.2 LongAdder和AtomicLong性能对比 236 7.3.3 LongAdder源码解析 239 7.3.4 LongAdder实践案例..........247 7.4 本章小结................250 第8章 并发工具 252 8.1 CountDownLatch 252 8.1.1 CountDownLatch的使用场景 252 8.1.2 CountDownLatch的实现原理 258 8.2 CyclicBarrier 266 8.2.1 CyclicBarrier的使用场景 266 8.2.2 CyclicBarrier的实现原理 269 8.2.3 CountDownLatch与CyclicBarrier的比较 273 8.3 Semaphore 273 8.3.1 Semaphore的使用场景 274 8.3.2 Semaphore的实现原理 276 8.3.3 Semaphore和RateLimiter的区别 278 8.4 Exchanger 283 8.4.1 Exchanger的使用场景 283 8.4.2 Exchanger的实现原理 286 8.5 本章小结 289 第9章 并发模式 290 9.1 单例模式 290 9.1.1 饿汉式 290 9.1.2 懒汉式 291 9.1.3 双重check 292 9.1.4 内部静态类 292 9.1.5 枚举 293 9.2 不可变模式 294 9.2.1 不可变模式的设计 294 9.2.2 不可变模式注意点 296 9.3 写时复制模式 297 9.4 线程本地存储模式 299 9.4.1 ThreadLocal 299 9.4.2 InheritableThreadLocal 305 9.5 Thread-Pre-Message模式 307 9.6 Worker Thread模式 308 9.7 Producer-Consumer模式 310 9.8 本章小结 311 第 10章 并发优化 313 10.1 提升锁的性能 313 10.1.1 锁粒度优化 313 10.1.2 锁持有时间优化 315 10.1.3 锁分离 315 10.2 虚拟机对锁优化 317 10.2.1 自旋锁 317 10.2.2 锁消除 317 10.2.3 锁粗化 319 10.3 线程上下文切换优化 319 10.3.1 线程上下文切换 319 10.3.2 乐观锁替换竞争锁 320 10.3.3 减少垃圾回收增加的“次数” 320 10.3.4 设置合理的线程池大小 320 10.4 本章小结 321 第 11章 并发框架 322 11.1 Disruptor 322 11.1.1 Disruptor简介 322 11.1.2 Disruptor示例 322 11.1.3 Disruptor原理 327 11.2 Akka 333 11.2.1 Akka简介 333 11.2.2 Akka示例 334 11.2.3 Akka原理 338 11.3 本章小结 342 第 12章 线程池在各大框架中的运用 343 12.1 Tomcat中的线程池 343 12.1.1 Tomcat的总体架构 343 12.1.2 Tomcat线程池原理 344 12.2 Dubbo中的线程池 350 12.2.1 Dubbo简介 350 12.2.2 消费者的线程池模型 350 12.2.3 提供者的线程池模型 355 12.3 Netty中的线程池 356 12.3.1 Reactor线程模型 356 12.3.2 EventLoopGroup线程池 358 12.4 本章小结 361 参考文献 362
展开全部

作者简介

曹亮,长期就职于国内一线互联网企业,担任资深Java开发以及Java技术专家,对资金清结算领域以及系统稳定性建设有一定的掌握,擅长软件开发知识结构的总结沉淀,在论坛上博客有超百万阅读量。郑程,拥有10年互联网IT从业经历,其中深耕金融科技领域6年以上,熟悉互联网金融和资金清结算架构体系。目前是某一线互联网公司资产经营团队的技术负责人,负责核心业务架构和团队管理。对于互联网高并发编程和领域驱动设计有深入的理解,曾一手打造了支持高并发处理能力的金融平台。

预估到手价 ×

预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。

确定
快速
导航