zxiaofan.com

Life is all about choices!生命不息,学习不止。By : zxiaofan.com

LinkedBlockingQueue源码分析(JDK8)

本文分析LinkedBlockingQueue的源码,学习其底层实现。LinkedBlockingQueue特性及使用场景:1、基于链表实现,线程安全的阻塞队列。2、“two lock queue”算法变体,双锁(ReentrantLock):takeLock、putLock,允许读写并行,rem...

2017-06-10 23:41:03

阅读数 9019

评论数 3

ThreadLocal源码分析(JDK8)

ThreadLocal特性及使用场景: 1、方便同一个线程使用某一对象,避免不必要的参数传递; 2、线程间数据隔离(每个线程在自己线程里使用自己的局部变量,各线程间的ThreadLocal对象互不影响); 3、获取数据库连接、Session、关联ID(比如日志的uniqueID,方便串起多个日志)...

2017-01-25 18:13:54

阅读数 11297

评论数 5

Java集合大整理

HashSet 允许,just 1个 no HashMap 同HashMap 【add】:调用HashMap的put方法,put的value传入伪值static final Object PRESENT = new Object(),仅仅为了保持映射关系;(所有value都是同一个对象) 【rem...

2016-03-28 23:48:09

阅读数 13034

评论数 0

EnumMap源码分析

自Java8以来,HashMap是高效的。应用HashMap完成枚举类型到值的映射也是我们常用的方式,但是EnumMap将更加高效。EnumMap顾名思义,是为枚举类服务的。 key必须为枚举类(Enum),且创建EnumMap时必须指定key的类型。key不能为null,NullPoi...

2016-03-10 08:39:39

阅读数 12459

评论数 0

HashMap迭代时Remove不抛出ConcurrentModificationException的特例

众所周知,HashMap在迭代时remove会抛出异常,ConcurrentModificationException,但事实真的是这样的吗?的确会抛异常,但也有特例。废话少说,上代码: public class ConcurrentModificationException { publ...

2016-03-09 22:22:18

阅读数 12689

评论数 0

EnumSet源码分析

核心:long(long数组) 和 位运算             其存储结构elements并未直接存枚举本身,而是位标识,枚举存于elementType中的enumConstants中. 1、内部元素为枚举; 2、内部表示为位向量,使用“位标志”的替换形式。(类似0x1000000,按bi...

2016-03-09 13:48:12

阅读数 12508

评论数 0

ConcurrentHashMap源码分析--Java8

如果还停留在锁分离、Segment,那已经out了。 Segment虽保留,但已经简化属性,仅仅是为了兼容旧版本。 CAS算法;unsafe.compareAndSwapInt(this, valueOffset, expect, update); CAS(Compare And Swap),...

2016-02-05 09:42:30

阅读数 16555

评论数 10

HashMap源码分析(jdk1.8)

HashMap源码前前后后看了好几次,也和同事分享过好几次,每次都有新的收获。 分享也是一种提高! 本文首写于个人云笔记(点击访问),经多次修改,短期内不会有重大修改了,现发于此,有任何问题欢迎交流指正。 JDK1.8中采用的是位桶+链表/红黑树的方式,也是非线程安全的。当某个位桶的链表的长度达到...

2015-12-17 20:24:26

阅读数 12136

评论数 1

ArrayList源码分析(jdk1.8)

前几天自我学习了ArrayList的源码,写了篇云笔记,现将其发布到博客,供大家学习交流,本人并非大神,如有任何问题,欢迎批评指正。 最初是看了这篇文章http://www.cnblogs.com/hzmark/archive/2012/12/20/ArrayList.html,不过是基于jdk1...

2015-10-29 20:08:01

阅读数 11141

评论数 0

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