自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 收藏
  • 关注

原创 ConcurrentHashMap底层源码解析

//Put的关键方法final V putVal(K key, V value, boolean onlyIfAbsent) {//如果key为空,或者value为空,则抛出空指针异常if (key == null || value == null) throw new NullPointerException();//通过key的hash,重新计算hash值,计算过程高位保持低位异或,最高位必改成0int hash = spread(key.hashCode());//节点个数统计int b

2020-12-19 11:33:21 143 1

原创 ReentrantLock原理

ReentrantLock主要利用CAS+AQS队列来实现。它支持公平锁和非公平锁,两者的实现类似。CAS:Compare and Swap,比较并交换。CAS有3个操作数:内存值V、预期值A、要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。该操作是一个原子操作,被广泛的应用在Java的底层实现中。在Java中,CAS主要是由sun.misc.Unsafe这个类通过JNI调用CPU底层指令实现ReentrantLock主要利用CAS+AQS队列来实现。它支持公平锁和

2020-12-03 09:05:16 84

原创 CopyOnWriteArrayList详解

CopyOnWriteArrayList详解CopyOnWriteArrayList(写数组的拷贝)是ArrayList的一个线程安全的变体,CopyOnWriteArrayList和CopyOnWriteSet都是线程安全的集合,其中所有可变操作(add、set等等)都是通过对底层数组进行一次新的复制来实现的。它绝对不会抛出ConcurrentModificationException的异常。因为该列表(CopyOnWriteArrayList)在遍历时将不会被做任何的修改。CopyOn

2020-12-03 09:01:04 341

原创 HashMap部分源码解析

1、概述HashMap基于Map接口实现,元素以键值对的方式存储,并且允许使用null 建和null 值, 因为key不允许重复,因此只能有一个键为null,另外HashMap不能保证放入元素的顺序,它是无序的,和放入的顺序并不能相同。HashMap是线程不安全的。2、继承关系public class HashMap<K,V>extends AbstractMap<K,V>implements Map<K,V>, Cloneable, Serializable3

2020-12-03 08:53:41 76

原创 红黑树解析

红黑树解析红黑树定义和性质红黑树是一种含有红黑结点并能自平衡的二叉查找树。它必须满足下面性质:1:每个节点要么是黑色,要么是红色。2:根节点是黑色。3:每个叶子节点都是黑色。(叶子是NIL节点)4:每个红色结点的两个子结点一定都是黑色。5:任意一结点到每个叶子结点的路径都包含数量相同的黑结点。...

2020-11-16 20:32:44 80

原创 ArrayList解析 + 部分源码解析

ArrayList深度解析ArrayList就是动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了动态的增加和减少元素,实现了ICollection和IList接口,灵活的设置数组的大小等好处。定义:List接口的大小可变数组的实现,位于API文档的java.util.ArrayList。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。(此类大致上等同于 Vector类,除了此类是不同步的。)

2020-11-12 19:57:50 129 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除