自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 浅谈ReadWriteLock

1.什么是读写锁?为什么使用读写锁,优势在哪里? 在并发的情况下,如果多个线程同时读一个资源类是没有任何问题的;但是,多个线程同时去写入或者修改一个资源类就会存在问题。如果使用非读写锁,理论上所有读之间、读与写之间、写和写之间都是串行操作,这样会使代码运行效率大打折扣。 读写锁的意义在于同一时刻可以允许多个多线程去读,但是在任何一个写线程访问的时候,所有的读线程和其他写线程都会被阻塞。读写锁实际维护了一对锁,一个读锁,一个写锁,通过分离读锁和写锁,来提升代码运行效率。 写锁是可重入排他锁,如果当前线程已经

2022-05-23 14:59:09 270

原创 JDK1.8HashMap源码解析之resize扩容操作

一、概述 1.根据不同情况对容量以及阈值进行赋值 2.如果旧哈希表不为空,创建新哈希表准备扩容 3.遍历旧哈希表 (1)只有一个头节点的链表,将该头节点重新结算哈希放到新的哈希表 (2)红黑树 (3)遍历链表,如果扩容后的下标是否扩容前的相等, JDK1.8关于HashMap扩容时的resize()方法中(e.hash & oldCap) == 0算法讲解.将该节点放到新的哈希表,否则将下标加上扩容前容量放到新的哈希表 一、源码解析 final HashMap.Node<K,V&g

2021-11-08 14:03:57 464

原创 JDK1.8HashMap源码解析之put操作

嗯,这是一篇想了很久之后准备写的一篇关于HashMap源码解析的文章,如有不足之处欢迎下方评论! 一、变量 /** * 默认容量 */ static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; /** * 最大容量 */ static final int MAXIMUM_CAPACITY = 1 << 30; /** * 加载因子 */

2021-11-04 17:19:49 502

原创 JDK1.8关于HashMap扩容时的resize()方法中(e.hash & oldCap) == 0算法讲解

JDK1.8关于HashMap扩容时的resize()方法中(e.hash & oldCap) == 0算法讲解(易懂!!!) 话不多说,直接上重点! 省略... if ((e.hash & oldCap) == 0) { if (loTail == null) loHead = e; else loTail.next = e; loTail = e; } else { if (hiTail == null) h

2021-11-04 10:39:43 791 4

空空如也

空空如也

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

TA关注的人

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