随笔分类 - 源码
源码分析与学习
摘要:###前言 以前只知道ReentrantLock底层基于AQS实现,相对于(旧版本的)synchronized: 更轻量(基于CAS而不是管程),由JDK实现 可以实现公平/非公平 可中断等待 可绑定多个条件,以选择性地通知其他进程解除等待。 那在我们分析ReentrantLock源码之前,首先了解
阅读全文
摘要:##线程池核心方法execute()解析: public void execute(Runnable command) {//#1 if (command == null) throw new NullPointerException(); int c = ctl.get(); if (worker
阅读全文
摘要:首先我们要知道,在理想情况下的哈希表中,哈希函数生成的哈希值是value在数组中的下标,其范围是分布于负无穷到正无穷的整个实整数轴的。而在现实情况下,是不可能存在这么大的一个数组的。接下来分析HashMap怎么处理: HashMap的put方法: public V put(K key, V valu
阅读全文
摘要:在看HashSet源码的时候,意外发现底层HashMap保存的value居然不是null,而是保存一个Object作为Value。顿觉有悖常理,于是来分析一下: HashSet的add方法: public boolean add(E e) {return map.put(e, PRESENT)==n
阅读全文
摘要:单例模式双重检测java实现: public class Singleton { private volatile static Singleton instance = null; //#1 public static Singleton getInstance() { if (instance
阅读全文