JDK源码
JDK源码
Quince Q
曾经的文学爱好者,现在的 Java 学习者。
展开
-
AQS 详解之独占锁
本文以ReentrantLock的非公平锁图解 AQS 独占锁加解锁过程。前置知识了解static final class Node { /** 标记为共享节点 */ static final Node SHARED = new Node(); /** 标记为独占节点 */ static final Node EXCLUSIVE = null; /** 等待状态值,表示被取消 */ static final int CANCELLED = 1;原创 2020-10-29 16:34:19 · 189 阅读 · 1 评论 -
这下该懂 ArrayBlockingQueue 了吧
阻塞队列基础知识详见 juc 阻塞队列被问怕了,熬夜总结。源码详解成员变量和构造函数/** 队列中存放数据的数组 */final Object[] items;/** 下一次 take, poll, peek 或者 remove 的位置 */int takeIndex;/** 下一次 put, offer, 或者 add 的位置 */int putIndex;/** 队列中元素的数量 */int count;/** 全局锁 */final ReentrantLock lock;/原创 2020-05-15 11:29:41 · 188 阅读 · 0 评论 -
juc 阻塞队列被问怕了,熬夜总结
juc 指的是 jdk 下的 java.util.concurrent包,在这个包下提供了很多并发相关的工具类。本文将解析这个包下面的一些阻塞队列。阻塞队列其实是实现了java.util.concurrent.BlockingQueue接口的一些实现类,要搞明白阻塞队列,那么就要清楚这个接口到底是做什么的。public interface BlockingQueue<E> extends Queue<E> { boolean add(E e); boolean o原创 2020-05-15 11:30:05 · 171 阅读 · 0 评论 -
HashMap 源码解析及总结
成员变量解析/* HashMap 的最大容量为 2的30次方 由于 int 类型的数组占4个字节,一个字节是8位,即32位,但是有一位是符号位,所有最多只能左移30位 */static final int MAXIMUM_CAPACITY = 1 << 30;// 当元素个数超过这个阈值时,则进行扩容int threshold;// 存数据的哈希桶tran...原创 2020-02-25 15:22:40 · 146 阅读 · 0 评论 -
ArrayList 源码总结
ArrayList 成员变量// 默认容器的大小private static final int DEFAULT_CAPACITY = 10;// 存储的元素transient Object[] elementData;// 容器中元素的数量private int size;add(E e) 方法解析public boolean add(E e) { // 扩容 ...原创 2020-02-25 15:20:55 · 100 阅读 · 1 评论