自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java集合类框架学习 5.3—— ConcurrentHashMap(JDK1.8)

以下内容,如有问题,烦请指出,谢谢!现在看下1.8版本的ConcurrentHashMap,改动很大。目前本人也有些地方没有弄懂,具体来说就是扩容有关的那一块,有几个地方还不太对得上,单独理解是没问题的,联合起来发现存在些矛盾的地方。所以下面的扩容有关的,各位看官还是细看,自己也要想下。零、主要改动参照对象为jdk1.7的ConcurrentHashMap,当然,熟悉jdk1.

2017-03-05 22:41:40 10481 21

原创 Java集合类框架学习 4.3 —— HashMap(JDK1.8)

以下内容,如有问题,烦请指出,谢谢!这里看下1.8的HashMap,jdk1.8是个大改版,对于HashMap以及ConcurrentHashMap来说也是个很大的改版。零、主要改动相对于1.7:1、处理hash冲突的方式变化,当一条链表太长时,转化为红黑树保存,提高hash冲突时的查找速度,也就提升了几个主要的方法的速度。2、hashseed相关的都去

2017-03-03 21:56:33 1361

原创 jdk1.8 LongAdder源码学习

LongAdder是jdk8新增的用于并发环境的计数器,目的是为了在高并发情况下,代替AtomicLong/AtomicInt,成为一个用于高并发情况下的高效的通用计数器。高并发下计数,一般最先想到的应该是AtomicLong/AtomicInt,AtmoicXXX使用硬件级别的指令 CAS 来更新计数器的值,这样可以避免加锁,机器直接支持的指令,效率也很高。但是AtomicXXX中的 CAS

2017-03-05 22:46:49 7067 4

原创 Java集合类框架学习 5.2 —— ConcurrentHashMap(JDK1.7)

以下内容,如有问题,烦请指出,谢谢!jdk1.7的ConcurrentHashMap整体设计、存储结构、思路,和1.6的基本一样,都是用代理给相应的Segment进行对应的操作。设计实现上一个比较大的改变就HashEntry的next指针不再是final的,改为volatile,并且用Unsafe提供的操作进行有序的延迟写入(lazySet)。理解1.7的代码,需要对sun.m

2017-03-05 17:22:40 943 1

原创 Java集合类框架学习 5.1 —— ConcurrentHashMap(JDK1.6)

以下内容,如有问题,烦请指出,谢谢!这一篇讲1.6的ConcurrentHashMapConcurrentHashMap是Java程序员接触得最多的有关并发和线程安全的类,它兼顾了并发的两个基本点——安全,高效,在很多地方都有用到,每一个Java程序员都应该真正掌握这个类。虽然1.6版本过了10年多了,现有的1.8跟1.6的差异很大。不过1.6的最适合用来学习,它实现得简单直接

2017-03-05 13:45:14 1878 2

原创 简单了解sun.misc.Unsafe

这里简单了解下sun.misc.Unsafe,jdk中的类很多地方都有用到它,它是许多类的实现的关键,知道这个类干嘛的,对一些源码的阅读很有帮助。sun.misc.Unsafe算是Java留下的后门,能提供相当强大的操作,但是又不提供专业的文档。看名字就知道,sun本身就不推荐使用这个类。一般应用级的代码都不应该使用它,框架级别的,用这个的很多,比如jdk自身,一些框架netty,最常见的框架

2017-03-04 23:08:31 3792 1

原创 Java集合类框架学习 4.2 —— HashMap(JDK1.7)

看完1.6的,接下来看下1.7的,改动并不多,稍微过下就行零、主要改动相对于1.6:1、懒初始化 lazy init,默认构造的HashMap底层数组并不会直接初始化,而是先使用空数组,等到实际要添加数据时再真正初始化。2、引入hashSeed,用于得到更好的hash值,以及在扩容时判断是否需要重新计算每个Entry的hash值(Entry的hash不再是final的,可以

2017-03-03 21:05:45 1053 1

原创 Java集合类框架学习 4.1 —— HashMap(JDK1.6)

这篇开始看HashMap,先从1.6的开始,它是基础。理解了1.6的之后,再看下1.7以及1.8的改进。public class HashMap extends AbstractMap implements Map, Cloneable, Serializable一、基本性质1、基于哈希表的Map接口实现,使用链地址法处理hash冲突。如果hash函数绝对随机均匀,那么基本操作

2017-03-03 16:16:06 977 1

原创 为什么HashMap继承了AbstractMap还要实现Map接口

jdk中HashMap的声明如下     public class HashMap extends AbstractMap implements Map, Cloneable, SerializableAbstractMap的声明如下     public abstract class AbstractMap implements Map这就让人很奇怪了,AbstractMap是实

2017-03-03 16:13:31 7235 3

空空如也

空空如也

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

TA关注的人

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