
源码
当我遇上你csy
公众号【当我遇上你】
博客: https://idea360.cn/
展开
-
学习ConcurrentHashMap1.7分段锁原理
1. 概述接上一篇 学习 ConcurrentHashMap1.8 并发写机制, 本文主要学习 Segment分段锁 的实现原理。虽然 JDK1.7 在生产环境已逐渐被 JDK1.8 替代,然而一些好的思想还是需要进行学习的。比方说位图中寻找 bit 位的思路是不是和 ConcurrentHashMap1.7 有点相似?接下来,本文基于 OpenJDK7 来做源码解析。2. Concurr...原创 2020-03-17 22:01:09 · 2326 阅读 · 3 评论 -
学习ConcurrentHashMap并发写机制
1. 前言上篇文章讲了 Unsafe 类中 CAS 的实现,其实是在为这篇文章打基础。不太熟悉的小伙伴请移步Unsafe 中 CAS 的实现。本篇文章主要基于 OpenJDK8 来做源码解析。2. 源码ConcurrentHashMap 基于 HashMap 实现。JDK1.7 和 JDK1.8 作为并发容器在实现上是有差别的。JDK1.7 通过 Segment 分段锁实现,而 JDK1....原创 2020-03-15 23:53:01 · 280 阅读 · 0 评论 -
Unsafe中CAS的实现
前言Unsafe 是位于 sun.misc 包下的一个类。Unsafe 提供的 API 大致可分为内存操作、CAS、Class 相关、对象操作、线程调度、系统信息获取、内存屏障、数组操作等几类。由于并发相关的源码很多用到了 CAS,比如 java.util.concurrent.atomic 相关类、AQS、CurrentHashMap 等相关类。所以本文主要讲 Unsafe 中 CAS 的实现...原创 2020-03-15 11:17:26 · 486 阅读 · 0 评论 -
LinkedHashMap源码解读
1. 前言还是从面试中来,到面试中去。面试官在面试 Redis 的时候经常会问到,Redis 的 LRU 是如何实现的?如果让你实现 LRU 算法,你会怎么实现呢?除了用现有的结构 LinkedHashMap 实现,你可以自己实现一个吗?跳跃表、小顶堆行不行…阅读这篇文章前建议大家先熟悉下Java 面试必问之 Hashmap 底层实现原理(JDK1.8)。LinkedHashMap 基于 Ha...原创 2020-03-14 00:24:32 · 161 阅读 · 0 评论 -
Hashset源码分析
1. 概述Hashset 实现 set 接口,底层基于 Hashmap 实现, 但与 Hashmap 不同的实 Hashmap 存储键值对,Hashset 仅存储对象。HashSet 使用成员对象来计算 hashcode 值。2. 原理在《Head fist java》一书中有描述:当你把对象加入 HashSet 时,HashSet 会先计算对象的 hashcode 值来判断对象加入的位...原创 2020-03-12 18:08:13 · 171 阅读 · 0 评论