
源码
文章平均质量分 93
即刻实现工作室
Above all, don't lose hope.
展开
-
深入源码谈谈ReentrantLock中的公平锁和非公平锁的加锁机制
ReentrantLock是什么?干什么用的?我想在这里我就不用多赘述了,简言之就是用来加锁的,他和synchronized的语义是相同的,只不过它要比synchronized使用起来更加灵活,它的用法很简单,本文不做赘述。本文将深入ReentrantLock内部源码来看看ReentrantLock的加锁机制。一.ReentrantLock的公平锁和非公平锁ReentrantLock支持公平锁和非公平锁两种加锁机制,其默认是非公平锁。public ReentrantLock(boolean fair)原创 2021-03-05 13:53:56 · 3151 阅读 · 7 评论 -
谈谈HashMap源码中的优雅设计
final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { Node<K,V>[] tab; Node<K,V> p; int n, i; // 初始化桶数组 table, table 被延迟到插入新数据时再进行初始化 if ((tab = table) == null || (n = tab.len原创 2021-02-27 15:09:48 · 8623 阅读 · 24 评论 -
细说ArrayList和LinkedList
一、ArrayList1.底层基本数据结构:Object数组transient Object[] elementData; 2.ArrayList容量ArrayList可以通过构造函数指定初始容量,如果不指定则默认初始容量为10,需要注意的是,当是默认容量的时候,创建一个ArrayList后,不会马上将底层Object数据初始化成10,而是指定成一个空数组。无参构造器源码如下:private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENT原创 2021-02-23 23:29:57 · 534 阅读 · 0 评论