![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JDK源码分析
文章平均质量分 88
下一秒,待续
下一秒
展开
-
Java锁之CountDownLatch、Atomic源码解析
1.CountDownLatch1.1整体架构一个线程或多个线程等待所有线程运行完毕,在继续执行 sync 是一个同步器,是 CountDownLatch 的内部类实现private static final class Sync extends AbstractQueuedSynchronizer {...}1.2await方法 public void await...原创 2019-11-23 23:29:12 · 238 阅读 · 0 评论 -
Java锁之ReentrantLock源码解析
目录1.ReentrantLock1.1整体结构1.2ReentrantLock 构造器1.3释放锁的源码分析1.4公平锁源码分析——FairSync类1.5非公平锁源码解析——NonfairSync类1.6加锁和尝试加锁——ReentrantLock类1.ReentrantLock1.1整体结构可重入锁针对同一个线程可以对同一个对象重复获取锁;支持公平和非...原创 2019-11-23 20:35:50 · 203 阅读 · 0 评论 -
Java锁之AbstractQueuedSynchronizer源码解析
目录1.AbstractQueuedSynchronizer1.1整体架构1.2同步器的状态1.3同步队列——获取排他锁源码解析1.4同步队列——获取共享锁源码解析1.5同步队列——释放排他锁源码解析1.6同步队列——释放共享锁源码解析1.7条件队列——入队等待源码解析1.8条件队列——signal源码解析1.9条件队列——signalAll源码解析1....原创 2019-11-23 16:35:26 · 198 阅读 · 0 评论 -
Java线程池之ThreadPoolExecutor线程池源码解析
目录0、引言0.1任务队列: LinkedBlockingQueue 没有设置固定容量大小0.2最大线程数量是: Integer.MAX_VALUE0.3拒绝策略:不能自定义1、ThreadPoolExecutor1.1基本架构1.2提交方法源码解析1.3线程的管理解析0、引言为甚麽线程池不允许使用Executors去创建,而是通过ThreadPoolEx...原创 2019-11-23 11:22:44 · 145 阅读 · 0 评论 -
Java线程之Thread、Future、FutureTask源码解析
目录1.Thread1.1start方法源码解析1.2初始化源码分析2.Future2.1基本架构3.FutureTask3.1整体架构3.2初始化源码解析3.3get源码解析1.Thread1.1start方法源码解析// 创建一个新的线程public synchronized void start() { // 如果没有初始化,抛异常...原创 2019-11-20 23:16:41 · 1001 阅读 · 0 评论 -
Java队列之ArrayBlockingQueue源码解析
目录1.ArrayBlockingQueue1.1整体架构1.2初始化源码解析1.3新增数据源码解析1.4拿数据源码解析1.5删除数据1.ArrayBlockingQueue1.1整体架构有界的阻塞队列,容量一旦创建,就无法进行修改 队列满时,往队列中 put 数据会被阻塞,队列空时,往队列中拿数据也会被阻塞。// 队列存放在 object 的数组里面/...原创 2019-11-20 15:12:37 · 125 阅读 · 0 评论 -
Java队列之DelayQueue源码解析
目录1.DelayQueue1.1整体结构1.2放数据1.3拿数据1.DelayQueue1.1整体结构延迟执行,并且可以设置延迟多久之后执行 队列中元素将在过期时被执行,越靠近队头,越早过期 底层使用了优先级队列来实现,复用组合了PriorityQueue(策略者模式),让先过期的元素先执行//队列的元素必须为Delayed本身或者子类public clas...原创 2019-11-20 11:34:20 · 212 阅读 · 0 评论 -
Java队列之SynchronousQueue源码解析
目录1.SynchronousQueue1.1整体架构1.2非公平的堆栈1.2.1堆栈结构1.3公平的队列1.3.1队列结构1.SynchronousQueue1.1整体架构本身没有容量的大小,当put的数据被take消费/take等待put操作放入数据,完成后才可以返回 一种是先入先出的结构,一种是先入后出的结构 // 堆栈和队列共同的接口 ...原创 2019-11-20 09:24:15 · 250 阅读 · 0 评论 -
Java队列之LinkedBlockingQueue源码解析
目录1.LinkedBlockingQueue1.1整体架构1.2初始化源码解析1.3阻塞新增源码解析1.4阻塞删除源码分析1.5查看元素源码分析1.LinkedBlockingQueue1.1整体架构主要实现了BlockingQueue和Queue接口 Queue接口包含了:遇到队列满或空的时候,抛异常,如 add、remove、element;遇到队...原创 2019-11-20 00:26:53 · 150 阅读 · 0 评论 -
Java并发集合之ConcurrentHashMap源码解析
目录1.ConcurrentHashMap1.1整体框架1.2put方法源码解析1.3数组初始化时的源码解析1.4扩容的源码分析1.5get方法源码解析1.ConcurrentHashMap1.1整体框架HashTable是对实例方法进行加锁,会锁住整个实例对象, 1.7中ConcurrentHashMap使用了分段锁,对每个段进行加锁,降低了锁的粒度 1....原创 2019-11-19 21:09:39 · 211 阅读 · 0 评论 -
Java并发集合之CopyOnWriteArrayList源码解析
目录1.CopyOnWriteArrayList1.1整体架构1.2新增方法源码分析1.3删除方法的源码分析1.4迭代方法分析1.CopyOnWriteArrayList1.1整体架构通过锁+数组拷贝+volatile关键字保证了线程安全 每次操作都会拷贝一份数组,然后在新数组上进行操作,操作成功后在赋值回去//一旦数组被改变就可以知道private tra...原创 2019-11-19 17:47:13 · 195 阅读 · 0 评论 -
Java集合之HashSet和TreeSet源码解析
目录1.HashSet1.1HashSet整体架构1.2初始化源码解析1.3增加源码解析2.TreeSet2.1TreeSet整体架构2.2增加源码解析2.3迭代器方法1.HashSet1.1HashSet整体架构底层实现基于HashMap,使用了组合的方式把HashMap当成一个实例变量来实现// 把 HashMap 组合进来,key 是 Hash...原创 2019-11-19 00:42:08 · 163 阅读 · 0 评论 -
Java集合之LinkedHashMap和TreeMap源码解析
目录1.TreeMap1.1TreeMap整体架构1.2新增节点的源码解析2.LinkedHashMap2.1整体结构2.1按照插入顺序访问2.2访问最少删除原则(LRU)1.TreeMap1.1TreeMap整体架构底层数据结构使用了红黑树来进行实现,是一个有序且基本平衡的二叉排序树,可以维护节点的大小//比较器,如果外部有传进来 Comparator...原创 2019-11-18 18:51:14 · 268 阅读 · 0 评论 -
Java集合之HashMap源码解析
目录1.HashMap1.1整体架构1.2新增源码解析1.HashMap1.1整体架构底层使用了数组+链表+红黑树的数据结构,当链表长度大于等于8会转换为红黑树,当链表长度小于等于6红黑树会转化为链表 JDK1.7没有引进红黑树,单纯的使用链表解决冲突,在1.8版本中引进了红黑树并且实现了转换和退化操作 由于引进了红黑树所以,key的对象,必须正确的实现了Compare...原创 2019-11-18 15:14:20 · 106 阅读 · 0 评论 -
Java集合之LinkedList源码解析
目录1.LinkedList1.1整体架构1.2追加源码分析1.3节点删除1.4节点查询2.迭代器ListIterator2.1整体架构2.2三个方法源码解析1.LinkedList1.1整体架构底层使用了双向链表来进行实现,有一个头节点,尾节点和一个元素个数size 这里的头节点和尾节点不是哨兵的概念,只是单纯的指针指向概念!!!public c...原创 2019-11-18 01:45:32 · 179 阅读 · 0 评论 -
Java集合之ArrayList源码解析
目录1.ArrayList1.1整体结构1.2初始化源码解析1.3新增和扩容源码解析1.4删除源码分析2.迭代器2.1总体结构2.2三个方法源码解析1.ArrayList1.1整体结构初始化大小,默认是10;第一次add的时候扩容的值 size表示当前数组大小 modCount表示当前版本号1.2初始化源码解析private static f...原创 2019-11-17 15:37:19 · 230 阅读 · 0 评论