![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
源码
文章平均质量分 70
阅读源码
houjibofa2050
读源码,要有技术深度,做一个把一招练一万遍的程序员。
展开
-
AtomicLong与LongAdder比较
1.什么是AtomicInteger与LongAdder? AtomicInteger和LongAdder都是解决对数字的累加的原子操作,底层都使用到了cas结束,但是LongAdder在多线程的情况下,性能比AtomicLong性能要高。2.为什么LongAdder的性能比AtomicLong的性能要高? AtomicLong底层实现 public final long getAndAddLong(Object var1, long var2, long...原创 2021-09-16 01:02:42 · 366 阅读 · 0 评论 -
sync.map底层实现与应用场景
目录1.sync.map的底层实现是什么?2.sync.map 适用的场景是什么样子的?参考1.sync.map的底层实现是什么?底层结构是mutex,read,dirty,misses四个字段使用两个map,一个用于读,一个用于写,类比缓存与数据库,读优先read,写用dirty. 核心设计思想是保证高频读的无锁思想,用空间换空间。read 使用的Atomic实现,read 做缓存,先读read,read数据读不到,读dirty。...原创 2021-08-29 14:40:00 · 586 阅读 · 0 评论 -
ThreadLocal作用与源码分析
目录1.什么是ThreadLocal,threadlocal的作用是什么?2.threadlocal的常用方法有哪些?3.threadlocal的底层实现是什么?4.使用threadlocal,可能会出现什么问题?为防止出现问题怎么处理?5.threadlocal使用了map结构,是怎么解决hash冲突的?解决hash冲突有几种方式?6.threadlocal使用了map结构,默认的数组大小是多少,扩容阈值时多?7.set函数的源码分析8.get函数的源码分析9.re原创 2021-08-15 16:53:46 · 133 阅读 · 0 评论 -
HashMap ConcurrentHashMap 在1.7 与1.8 的区别
HashMap 1.7 底层使用的数据结构是数组+链表,链表是为了解决hash碰撞的,相同的值插入,链表的插入采用的是头插法。HashMap 1.8 底层使用的数据结构是数组+链表+红黑树,链表是为了解决hash碰撞的,红黑树是解决链表长度过长的查询问题。此处链表的插入采用的是尾插法。使用源码证明:java1.7HashMap 常量static final int DEF...原创 2020-03-26 19:50:22 · 1807 阅读 · 0 评论 -
HashMap 底层源码分析
jdk 1.8hashmap底层的数据结构数组+链表+红黑树底层存储数据的结构Node内部类hashmap调用hash函数1.计算hashcode函数的值2.hashcode值右移16位,获得hashcode的高位3.hashcode高位与低位进行与运算hashmap默认的初始容量16hashmap的最大容量 2^3...原创 2019-02-11 18:10:20 · 186 阅读 · 0 评论