Java 源码分析
文章平均质量分 93
始末丶Yzx
这个作者很懒,什么都没留下…
展开
-
AQS(AbstractQueuedSynchronizer) 框架源码解析
AQS框架源码解析什么是AQSAQS 内部体系架构内部类 Node 结构AQS 同步队列基本结构源码解析本次以非公平锁开始分析抢锁解锁回到前面线程抢锁阻塞处什么是AQS用来构建锁或其他同步器组件的重量级基础框架及整个 JUC体系的基石,通过内置的 CLH队列的变种来完成资源获取线程的排队工作,将每条要去抢占资源的线程封成一Node节点来实现锁的分配,有一个 int 的 state 变量表示持有锁的状态,通过 CAS 完成对 state 变量的修改 0表示没有,1表示阻塞, 大于1表示可重入锁AQS原创 2021-01-23 15:00:23 · 152 阅读 · 0 评论 -
ConcurrentHashMap & Hashtable
ConcurrentHashMapConcurrentHashMap 和 Hashtable 的区别加锁方式HashtableConcurrentHashMapConcurrentHashMap 和 Hashtable 的区别主要提醒在实现线程安全的方式上不同底层数据结构JDK1.7 的ConcurrentHashMap 底层采用 分段数组 + 链表 实现, JDK 1.8 采用数据结构与HashMap 1.8 的结构一样, 数组 + 链表/红黑树, Hashtable 底层数据结构采用原创 2021-01-23 13:02:03 · 120 阅读 · 0 评论 -
HashMap 1.8源码分析
HashMap 1.8源码分析HashMap的数据结构类的继承关系HashMap 成员变量HashMap 内部类HashMap 构造方法HashMap 常用方法链表转红黑树方法获取方法删除方法其他并发情况下 JDK1.7头插法为什么会形成链表成环为什么默认初始容量为16HashMap 的长度为什么是2的幂次方为什么负载因子默认值是 0.75fHashMap的数据结构用的是数组+链表+红黑树的结构,也叫哈希桶,在JDK 1.8之前都是数组+链表的结构,因为在链表的查询操作都是 O(N) 的时间复杂度,而原创 2021-01-22 18:02:16 · 70 阅读 · 0 评论 -
LinkedList 1.8 源码分析
LinkedList 1.8 源码分析介绍主要内部类成员变量构造函数方法addAll(int index, Collection<? extends E> c)get(int index)set(int index, E element)add(E e)add(int index, E element)addLast(E e)addFirst(E e)clear()indexOf(Object o)remove()remove(int index)remove(Object o)介绍link原创 2021-01-22 17:29:36 · 90 阅读 · 0 评论 -
ArrayList 1.8 源码分析
ArrayList 1.8 源码分析ArrayList 简介ArrayList 继承结构主要成员变量构造函数常用方法add(E e)add(int index, E element)addAll(Collection<? extends E> c)addAll(int index, Collection<? extends E> c)get(int index)set(int index, E element)remove(int index)remove(Object o)remo原创 2021-01-22 17:06:09 · 89 阅读 · 0 评论