0 0 0

Java并发实现原理:JDK源码剖析.epub

尒蚂蚁
1月前 380
我用夸克网盘分享了「Java并发实现原理:JDK源码剖析.epub」,点击链接即可保存。打开「夸克APP」在线查看,支持多种文档格式转换。
Java并发实现原理:JDK源码剖析 作者: 余春龙 出版社: 电子工业出版社 出品方: 博文视点 出版年: 2020-4 页数: 256 定价: 89元 装帧: 平装-胶订 ISBN: 9787121379727

内容简介

《Java并发实现原理:JDK源码剖析》全面而系统地剖析了Java Concurrent包中的每一个部分,对并发的实现原理进行了深刻的探讨。全书分为8章,第1章从最基础的多线程知识讲起,理清多线程中容易误解的知识点,探究背后的原理,包括内存重排序、happen-before、内存屏障等;第2~8章,从简单到复杂,逐个剖析Concurrent包的每个部分,包括原子类、锁、同步工具类、并发容器、线程池、ForkJoinPool、CompletableFuture共7个部分。本书遵循层层递进的逻辑,后一章建立在前一章的知识点基础之上,建议读者由浅入深,逐步深入阅读。 《Java并发实现原理:JDK源码剖析》适合有一定Java开发经验的工程师、架构师阅读。通过本书,读者可以对多线程编程形成一个“深刻而直观”的认识,而不是再仅仅停留在概念和理论层面。

作者简介

余春龙 中科院软件所计算机硕士毕业。热衷于高并发高可用架构、业务建模、领域驱动设计,在十年的工作中,经历过游戏、社交、广告、电商等各种类型的项目,积累了较丰富的工程经验。

网友热评

不忘初心: 内容比较全面,但介绍的都比较简单,想要深入学习并发编程的话,不太推荐。 null: 内容非常浅.只是把源码贴了出来,关键有些地方理解是错的 破晓之春: 想了解源码的可以参考研究一下。不过对我没啥用,弃了

图书目录

第1章多线程基础/1 1.1线程的优雅关闭/1 1.1.1stop与destory函数/1 1.1.2守护线程/1 1.1.3设置关闭的标志位/2 1.2InterruptedException与interrupt()函数/3 1.2.1什么情况下会抛出Interrupted异常/3 1.2.2轻量级阻塞与重量级阻塞/4 1.2.3t.isInterrupted()与Thread.interrupted()的区别/5 1.3synchronized关键字/5 1.3.1锁的对象是什么/5 1.3.2锁的本质是什么/6 1.3.3synchronized实现原理/7 1.4wait与notify/7 1.4.1生产者−消费者模型/7 1.4.2为什么必须和synchronized一起使用/8 1.4.3为什么wait()的时候必须释放锁/9 1.4.4wait()与notify()的问题/10 1.5volatile关键字/11 1.5.164位写入的原子性(HalfWrite)/11 1.5.2内存可见性/11 1.5.3重排序:DCL问题/12 1.6JMM与happen-before/13 1.6.1为什么会存在“内存可见性”问题/13 1.6.2重排序与内存可见性的关系/15 1.6.3as-if-serial语义/16 1.6.4happen-before是什么/17 1.6.5happen-before的传递性/18 1.6.6C++中的volatile关键字/19 1.6.7JSR-133对volatile语义的增强/20 1.7内存屏障/20 1.7.1Linux中的内存屏障/21 1.7.2JDK中的内存屏障/23 1.7.3volatile实现原理/24 1.8final关键字/25 1.8.1构造函数溢出问题/25 1.8.2final的happen-before语义/26 1.8.3happen-before规则总结/26 1.9综合应用:无锁编程/27 1.9.1一写一读的无锁队列:内存屏障/27 1.9.2一写多读的无锁队列:volatile关键字/27 1.9.3多写多读的无锁队列:CAS/28 1.9.4无锁栈/28 1.9.5无锁链表/28 第2章Atomic类/29 2.1AtomicInteger和AtomicLong/29 2.1.1悲观锁与乐观锁/31 2.1.2Unsafe的CAS详解/31 2.1.3自旋与阻塞/32 2.2AtomicBoolean和AtomicReference/33 2.2.1为什么需要AtomicBoolean/33 2.2.2如何支持boolean和double类型/33 2.3AtomicStampedReference和AtomicMarkableReference/34 2.3.1ABA问题与解决办法/34 2.3.2为什么没有AtomicStampedInteger或AtomictStampedLong/35 2.3.3AtomicMarkableReference/36 2.4AtomicIntegerFieldUpdater、AtomicLongFieldUpdater和AtomicReferenceFieldUpdater/37 2.4.1为什么需要AtomicXXXFieldUpdater/37 2.4.2限制条件/38 2.5AtomicIntegerArray、AtomicLongArray和AtomicReferenceArray/38 2.5.1使用方式/38 2.5.2实现原理/39 2.6Striped64与LongAdder/40 2.6.1LongAdder原理/40 2.6.2最终一致性/41 2.6.3伪共享与缓存行填充/42 2.6.4LongAdder核心实现/43 2.6.5LongAccumulator/47 2.6.6DoubleAdder与DoubleAccumulator/47 第3章Lock与Condition/49 3.1互斥锁/49 3.1.1锁的可重入性/49 3.1.2类继承层次/49 3.1.3锁的公平性vs.非公平性/51 3.1.4锁实现的基本原理/51 3.1.5公平与非公平的lock()实现差异/53 3.1.6阻塞队列与唤醒机制/55 3.1.7unlock()实现分析/58 3.1.8lockInterruptibly()实现分析/59 3.1.9tryLock()实现分析/60 3.2读写锁/60 3.2.1类继承层次/60 3.2.2读写锁实现的基本原理/61 3.2.3AQS的两对模板方法/62 3.2.4WriteLock公平vs.非公平实现/65 3.2.5ReadLock公平vs.非公平实现/67 3.3Condition/68 3.3.1Condition与Lock的关系/68 3.3.2Condition的使用场景/69 3.3.3Condition实现原理/71 3.3.4await()实现分析/72 3.3.5awaitUninterruptibly()实现分析/73 3.3.6notify()实现分析/74 3.4StampedLock/75 3.4.1为什么引入StampedLock/75 3.4.2使用场景/75 3.4.3“乐观读”的实现原理/77 3.4.4悲观读/写:“阻塞”与“自旋”策略实现差异/78 第4章同步工具类/83 4.1Semaphore/83 4.2CountDownLatch/84 4.2.1CountDownLatch使用场景/84 4.2.2await()实现分析/85 4.2.3countDown()实现分析/85 4.3CyclicBarrier/86 4.3.1CyclicBarrier使用场景/86 4.3.2CyclicBarrier实现原理/87 4.4Exchanger/90 4.4.1Exchanger使用场景/90 4.4.2Exchanger实现原理/91 4.4.3exchange(Vx)实现分析/92 4.5Phaser/94 4.5.1用Phaser替代CyclicBarrier和CountDownLatch/94 4.5.2Phaser新特性/95 4.5.3state变量解析/96 4.5.4阻塞与唤醒(TreiberStack)/98 4.5.5arrive()函数分析/99 4.5.6awaitAdvance()函数分析/101 第5章并发容器/104 5.1BlockingQueue/104 5.1.1ArrayBlockingQueue/105 5.1.2LinkedBlockingQueue/106 5.1.3PriorityBlockingQueue/109 5.1.4DelayQueue/111 5.1.5SynchronousQueue/113 5.2BlockingDeque/121 5.3CopyOnWrite/123 5.3.1CopyOnWriteArrayList/123 5.3.2CopyOnWriteArraySet/124 5.4ConcurrentLinkedQueue/Deque/125 5.5ConcurrentHashMap/130 5.5.1JDK7中的实现方式/130 5.5.2JDK8中的实现方式/138 5.6ConcurrentSkipListMap/Set/152 5.6.1ConcurrentSkipListMap/153 5.6.2ConcurrentSkipListSet/162 第6章线程池与Future/163 6.1线程池的实现原理/163 6.2线程池的类继承体系/164 6.3ThreadPoolExecutor/165 6.3.1核心数据结构/165 6.3.2核心配置参数解释/165 6.3.3线程池的优雅关闭/167 6.3.4任务的提交过程分析/172 6.3.5任务的执行过程分析/174 6.3.6线程池的4种拒绝策略/179 6.4Callable与Future/180 6.5ScheduledThreadPoolExecutor/183 6.5.1延迟执行和周期性执行的原理/184 6.5.2延迟执行/184 6.5.3周期性执行/185 6.6Executors工具类/188 第7章ForkJoinPool/190 7.1ForkJoinPool用法/190 7.2核心数据结构/193 7.3工作窃取队列/195 7.4ForkJoinPool状态控制/198 7.4.1状态变量ctl解析/198 7.4.2阻塞栈TreiberStack/200 7.4.3ctl变量的初始值/201 7.4.4ForkJoinWorkerThread状态与个数分析/201 7.5Worker线程的阻塞-唤醒机制/202 7.5.1阻塞–入栈/202 7.5.2唤醒–出栈/204 7.6任务的提交过程分析/205 7.6.1内部提交任务pushTask/206 7.6.2外部提交任务addSubmission/206 7.7工作窃取算法:任务的执行过程分析/207 7.7.1顺序锁SeqLock/209 7.7.2scanGuard解析/210 7.8ForkJoinTask的fork/join/212 7.8.1fork/213 7.8.2join的层层嵌套/213 7.9ForkJoinPool的优雅关闭/222 7.9.1关键的terminate变量/222 7.9.2shutdown()与shutdownNow()的区别/223 第8章CompletableFuture/226 8.1CompletableFuture用法/226 8.1.1最简单的用法/226 8.1.2提交任务:runAsync与supplyAsync/226 8.1.3链式的CompletableFuture:thenRun、thenAccept和thenApply/227 8.1.4CompletableFuture的组合:thenCompose与thenCombine/229 8.1.5任意个CompletableFuture的组合/231 8.2四种任务原型/233 8.3CompletionStage接口/233 8.4CompletableFuture内部原理/234 8.4.1CompletableFuture的构造:ForkJoinPool/234 8.4.2任务类型的适配/235 8.4.3任务的链式执行过程分析/237 8.4.4thenApply与thenApplyAsync的区别/241 8.5任务的网状执行:有向无环图/242 8.6allOf内部的计算图分析/244

Java并发实现原理:JDK源码剖析.epub"网盘下载"

版权说明

1、本站不保存、不存储任何实质资源,以上二维码指向为网盘资源链接,其内容归对应版权方所有
2、如有侵犯版权的情况,请点击下面举报/反馈按钮反馈或发送邮件[email protected]投诉说明情况
3、我们核实后将第一时间删除相关页面内容,谢谢理解和配合

这些人下载过 (12)
  • 左耳进右耳出
  • 师太、啵一个
  • 太阳是我搓圆滴
  • 奶声奶气
  • Winter.承諾
  • 小故事里的海
  • 孤者为尊
  • 世界太乱没有人懂
  • 一曲冷凌霜
  • 対着迗悾、說愛你
  • 対着迗悾、說愛你
最新回复 (0)

    暂无评论

请先登录后发表评论!

返回
请先登录后发表评论!