当前位置:当前位置:主页 > 计算机电子书 > Java > Java高并发 pdf电子书
Java高并发与集合框架:JCF和JUC源码分析与实现

Java高并发与集合框架:JCF和JUC源码分析与实现 PDF 清晰完整版

  • 更新:2022-04-02
  • 大小:23.9 MB
  • 类别:Java高并发
  • 作者:银文杰
  • 出版:电子工业出版社
  • 格式:PDF

  • 资源介绍
  • 学习心得
  • 相关内容

Java高并发与集合框架:JCF和JUC源码分析与实现》是由电子工业出版社出版的一本关于Java高并发方面的书籍,作者是银文杰,主要介绍了关于Java、高并发、JCF方面的知识内容,目前在Java高并发类书籍综合评分为:7.8分。

书籍介绍

掌握Java集合框架和Java并发工具包,轻松应对80%的工作场景

编辑推荐

1.本书主要对Java集合框架(JCF)和Java并发工具包(JUC)进行介绍,包括它们的适用场景、使用方法、技术理论和运行原理。

2.根据二八法则,掌握Java集合框架和Java并发工具包,轻松应对80%的工作场景。

3.本书思路清晰、由浅入深、通俗易懂、讲解细致,帮助读者轻松掌握相关知识点。

内容简介

本书主要对Java集合框架(JCF)和Java并发工具包(JUC)进行介绍,包括它们的适用场景、使用方法、技术理论和运行原理。为了让读者能够轻松阅读本书,本书中所有内容都采用由浅入深的方式进行介绍,先保证读者会用这些技术,再介绍这些技术的运行原理。

本书分为3部分,第1部分为Java编程入门知识,方便初学者对JCF相关知识进行查漏补缺,第2部分和第3部分对基础知识有一定的要求,适合有一些Java编程基础的技术人员阅读。

作者简介

银文杰

笔名“说好不能打脸”,CSDN专栏作者,CSDNJava特约编辑,《高性能服务系统构建与实战》一书作者。16年资深IT“直男”一枚,爱好是敲敲代码、写写博客、研究创业热点。
参与过多个百万级用户系统的设计研发,对系统顶层设计、技术线路规划、系统性能调优、业务抽象等有较丰富的经验。也曾有几年头脑发热拍案创业,兼职过市场销售、电话客服、公司保安及清洁大叔。

目录

  • 第I部分Java集合框架1
  • 第1章JCF中的List集合3
  • 1.1List集合概要和重要接口介绍3
  • 1.1.1java.lang.Iterable接口4
  • 1.1.2java.util.Collection接口5
  • 1.1.3java.util.AbstractList抽象类6
  • 1.1.4java.util.RandomAccess接口7
  • 1.2List集合实现——Vector14
  • 1.2.1Vector集合的扩容操作16
  • 1.2.2Vector集合的修改方法——set(int,E)19
  • 1.2.3Vector集合的删除方法——removeElementAt(int)20
  • 1.3List集合实现——ArrayList22
  • 1.3.1ArrayList集合概述23
  • 1.3.2ArrayList集合的初始化操作和扩容操作23
  • 1.3.3ArrayList集合中的add(E)方法26
  • 1.3.4Vector集合与ArrayList集合对比28
  • 1.4List集合实现——Stack29
  • 1.5List集合实现——LinkedList32
  • 1.5.1LinkedList集合的主要结构33
  • 1.5.2LinkedList集合的添加操作35
  • 1.5.3LinkedList集合的移除操作40
  • 1.5.4LinkedList集合的查找操作44
  • 1.5.5使用LinkedList集合的栈工作特性46
  • 1.6LinkedList集合与ArrayList集合的对比48
  • 1.6.1两种集合写操作性能的比较48
  • 1.6.2两种集合读操作性能的比较49
  • 1.6.3不同遍历方式对LinkedList集合的意义50
  • 1.6.4在什么场景中推荐选择LinkedList集合54
  • 第2章JCF中的Queue、Deque集合55
  • 2.1Queue集合实现——ArrayDeque56
  • 2.1.1ArrayDeque集合的主要结构及相关方法57
  • 2.1.2ArrayDeque集合的初始化过程60
  • 2.1.3ArrayDeque集合的添加操作61
  • 2.1.4ArrayDeque集合的扩容操作64
  • 2.2堆和堆排序67
  • 2.2.1树、二叉树67
  • 2.2.2堆、小顶堆、大顶堆69
  • 2.2.3堆的降维——使用数组表示堆结构71
  • 2.2.4堆排序72
  • 2.2.5自行完成一个堆排序75
  • 2.3Queue集合实现——PriorityQueue77
  • 2.3.1PriorityQueue队列的基本使用方法77
  • 2.3.2PriorityQueue队列的构造78
  • 2.3.3PriorityQueue队列的核心工作原理82
  • 2.3.4PriorityQueue队列的扩容操作88
  • 2.3.5PriorityQueue队列的添加操作90
  • 2.3.6PriorityQueue队列的移除操作90
  • 第3章JCF中的Map集合94
  • 3.1Map集合概述94
  • 3.1.1K-V键值对节点定义——Entry95
  • 3.1.2与Map集合有关的重要接口和抽象类97
  • 3.2红黑树略讲103
  • 3.2.1二叉查找树(二叉搜索树)104
  • 3.2.2二叉查找树的查找操作和添加操作105
  • 3.2.3为什么需要红黑树107
  • 3.2.4红黑树的基本结构107
  • 3.2.5红黑树的操作规则108
  • 3.2.6红黑树的节点添加操作110
  • 3.2.7红黑树的节点删除操作120
  • 3.3Map集合实现——TreeMap136
  • 3.3.1TreeMap集合的基本使用方法136
  • 3.3.2TreeMap集合的重要属性和方法138
  • 3.4Map集合实现——HashMap148
  • 3.4.1HashMap集合的结构150
  • 3.4.2HashMap集合的主要工作过程155
  • 3.4.3向HashMap集合中添加K-V键值对节点(链表方式)158
  • 3.4.4向HashMap集合中添加K-V键值对节点(红黑树方式)160
  • 3.4.5HashMap集合红黑树、链表互相转换165
  • 3.4.6HashMap集合的扩容操作172
  • 3.5Map集合实现——LinkedHashMap180
  • 3.5.1LinkedHashMap集合的节点结构182
  • 3.5.2LinkedHashMap集合的主要结构184
  • 3.5.3LinkedHashMap集合的迭代器186
  • 第4章JCF的Set集合191
  • 4.1Set集合概述192
  • 4.1.1java.util.SortedSet接口192
  • 4.1.2java.util.NavigableSet接口195
  • 4.1.3java.util.AbstractSet抽象类199
  • 4.2Set集合实现——HashSet200
  • 4.2.1HashSet集合的主要属性201
  • 4.2.2HashSet集合的构造方法201
  • 4.2.3HashSet集合的主要操作方法202
  • 4.3Set集合实现——LinkedHashSet、TreeSet203
  • 4.3.1LinkedHashSet集合203
  • 4.3.2TreeSet集合204
  • 第II部分JUC与高并发概述208
  • 第5章ObjectMonitor管程实现212
  • 5.1悲观锁和乐观锁212
  • 5.2synchronized修饰符和线程控制215
  • 5.2.1线程的基本特点215
  • 5.2.2线程状态切换和操作方法216
  • 5.3ObjectMonitor基本结构概要227
  • 5.3.1synchronized修饰符和锁升级过程228
  • 5.3.2管程与synchronized修饰符233
  • 5.3.3对线程状态切换示意图进行细化235
  • 5.4使用jstack命令观察线程状态237
  • 5.4.1jstack基本命令237
  • 5.4.2jstack命令中的线程关键信息238
  • 5.4.3线程状态及切换方式(仅限ObjectMonitor模式)240
  • 5.5ObjectMonitor模式总结244
  • 5.5.1as-if-serial语义原则与happens-before规则244
  • 5.5.2ObjectMonitor模式如何保证三性246
  • 5.5.3ObjectMonitor模式如何解决互斥、同步问题248
  • 第6章JUC的必要组成部分250
  • 6.1Unsafe工具类252
  • 6.1.1在源码中使用Unsafe工具类252
  • 6.1.2Unsafe工具类中的典型方法讲解255
  • 6.2LockSupport工具类261
  • 6.2.1park()方法和unpark()方法的使用示例261
  • 6.2.2LockSupport工具类的主要属性和方法263
  • 6.3线程状态266
  • 6.3.1使用jstack命令观察线程状态266
  • 6.3.2更详细的线程状态说明269
  • 6.3.3其他常用命令271
  • 6.4volatile修饰符275
  • 6.4.1为什么需要Java内存模型275
  • 6.4.2内存可见性问题和MESI协议277
  • 6.4.3存储缓存和失效队列281
  • 6.4.4内存屏障与数据一致性283
  • 6.4.5内存屏障与指令重排285
  • 6.4.6volatile修饰符和内存屏障289
  • 6.5轻量化的原子性操作方法300
  • 6.5.1原子性操作——AtomicInteger类301
  • 6.5.2原子性操作——AtomicStampedReference类301
  • 6.5.3使用变量句柄完成原子性操作303
  • 第7章另一种管程实现——AQS技术305
  • 7.1AQS技术的基本原理306
  • 7.1.1AQS技术的工作过程概要及使用示例306
  • 7.1.2AQS技术中的关键定义308
  • 7.2AQS实现——ReentrantLock类325
  • 7.2.1ReentrantLock类的使用方法325
  • 7.2.2AQS技术如何帮助ReentrantLock类工作327
  • 7.3AQS实现——Condition控制332
  • 7.3.1基本使用方法332
  • 7.3.2ReentrantLock类如何进行Condition控制334
  • 7.4AQS技术总结342
  • 第III部分在高并发场景中工作的集合345
  • 第8章高并发场景中的List、Map和Set集合346
  • 8.1List集合实现——CopyOnWriteArrayList346
  • 8.1.1CopyOnWriteArrayList集合概述346
  • 8.1.2CopyOnWriteArrayList集合的主要构造方法348
  • 8.1.3CopyOnWriteArrayList集合的主要方法349
  • 8.1.4java.util.Collections.synchronizedList()方法的补充作用352
  • 8.2Map集合实现——ConcurrentHashMap355
  • 8.2.1ConcurrentHashMap集合概述355
  • 8.2.2ConcurrentHashMap集合的主要属性358
  • 8.2.3ConcurrentHashMap集合的主要工作过程359
  • 8.3高并发场景中的List、Map、Set集合说明378
  • 第9章高并发场景中的Queue集合380
  • 9.1概述380
  • 9.1.1什么是有界队列,什么是无界队列381
  • 9.1.2什么是阻塞队列,什么是非阻塞队列382
  • 9.2Queue集合实现——ArrayBlockingQueue384
  • 9.2.1ArrayBlockingQueue队列的基本使用方法385
  • 9.2.2ArrayBlockingQueue队列的工作原理388
  • 9.3Queue集合实现——LinkedBlockingQueue396
  • 9.3.1LinkedBlockingQueue队列的重要属性397
  • 9.3.2LinkedBlockingQueue队列的构造方法399
  • 9.3.3入队操作和出队操作401
  • 9.3.4LinkedBlockingQueue队列的主要方法404
  • 9.4Queue集合实现——LinkedTransferQueue413
  • 9.4.1LinkedTransferQueue队列的基本使用场景414
  • 9.4.2LinkedTransferQueue队列的主要结构416
  • 9.4.3LinkedTransferQueue队列的主要工作过程420
  • 9.4.4LinkedTransferQueue队列的主要方法437
  • 9.5Queue集合实现——PriorityBlockingQueue438
  • 9.5.1PriorityBlockingQueue队列的主要属性439
  • 9.5.2PriorityBlockingQueue队列的主要构造方法440
  • 9.5.3PriorityBlockingQueue队列的扩容过程442
  • 9.5.4PriorityBlockingQueue队列的典型操作方法444
  • 9.6Queue集合实现——DelayQueue446
  • 9.6.1java.util.concurrent.Delayed接口与基本使用方法447
  • 9.6.2DelayQueue队列的主要属性和构造方法449
  • 9.6.3DelayQueue队列的主要工作过程450
  • 第10章高并发场景中的集合总结454
  • 10.1还有哪些高并发场景中的常用集合没有被提及454
  • 10.2典型集合对应关系对比455
  • 10.3高并发场景中的集合可借鉴的设计思想455
  • 10.3.1使用JUC提供的基本要素保证线程安全性456
  • 10.3.2通过复合手段保证多场景中的性能平衡性457
  • 10.3.3更多提升性能的手段458

资源获取

相关资源

网友留言