Java并发编程-Lock和condition的原理及AQS的运用

AQS的全称为(AbstractQueuedSynchronizer),这个类也是在java.util.concurrent.locks下面。这个类似乎很不容易看懂,因为它仅仅是提供了一系列公共的方法,让子类来调用。那么要理解意思,就得从子类下手,反过来看才容易看懂。如下图所示: 图 5...

2016-08-16 19:33:00

阅读数 3938

评论数 0

JDK源码学习(1)-HashMap源码分析,HashMap与HashTable的差别

Hashtable是HashMap的线程安全版本,它的实现和HashMap实现基本一致,除了它不能包含null值的key和value,并且它在计算hash值和数组索引值的方式要稍微简单一些。 Hashtable线程安全实现方式是将所有方法都标记成synchronized,但这样加锁的粒度大,...

2016-07-28 20:46:42

阅读数 1320

评论数 0

JDK源码学习(6)-ConcurrentHashMap代码学习

在JDK源码学习(1)-HashMap源码分析,HashMap与HashTable的差别的时候我们就学习过HashMap和Hashtable,知道Hashtable是线程安全的,而HashMap在多线程的情况下是不安全的。我们在多线程的情况下除了用Hashtable代替HashMap以外,也可以用...

2016-05-21 17:08:42

阅读数 609

评论数 0

JDK源码学习(3)-LinkedHashMap源码学习

LinkedHashMap继承HashMap,是对HashMap的扩展。LinkHashMap内部维持一个双向链表,维护节点的插入或者LRU次序:迭代遍历它时,取得“键值对”的顺序是插入次序,或者是最近最少使用(LRU)的次序。只比HashMap慢一点;而在迭代访问时反而更快。 可以把Linked...

2016-05-16 22:42:01

阅读数 896

评论数 0

JDK源码学习(4)-HashMap的遍历方式,两种迭代器源码分析

对HashMap本身没有迭代器,如果要对HashMap遍历有两种方式。 keySet()方法获取Set对象,调用该对象的迭代器对key值遍历。 entrySet()方法获取SetMap map = new HashMap(); map.put("a1", "a11&q...

2016-05-11 15:54:08

阅读数 979

评论数 0

JDK源码学习(5)-Map的性能比较,HashMap和TreeMap,ConcurrentSkipListMap

在之前已经学习过: JDK源码学习(1)-HashMap源码分析,HashMap与HashTable的差别 JDK源码学习(2)-TreeMap源码分析 这篇文章对jdk提供的Map实现类的性能进行比较:- 问题:比较Java原生的 3种Map的效率。 1.TreeMap...

2016-05-04 14:33:18

阅读数 670

评论数 0

JDK源码学习(2)-TreeMap源码分析

之前介绍了Map集合中的具体实现类的HashMap,HashTable。(JDK源码 码学习(1)-HashMap源码分析,HashMap与HashTable的差别) 这两个类都是基于哈希表实现的,今天我们介绍另一种Map集合,TreeMap。TreeMap是基于红黑树实现的。      T...

2016-05-02 16:56:55

阅读数 1101

评论数 0

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