HashMap和Hashtable的区别 在正式开始这篇文章的主题之前,我们先来比较下HashMap和Hashtable之间的差异点: 1、Hashtable是线程安全的,它对外提供的所有方法都是都使用了synchronized,是同步的,而HashMap是非线程安全的。 2、Hashtable不允 ...
分类:
编程语言 时间:
2016-06-19 18:15:53
阅读次数:
188
好像今天没有什么源码读,那么就来看看java的这两种HashMap有啥不一样的地方吧,在这之前先普及一下HashMap的一些基本知识: (1)放入HashMap的元素是key-value对。 (2)底层说白了就是以前数据结构课程讲过的散列结构。 (3)要将元素放入到hashmap中,那么key的类型 ...
分类:
编程语言 时间:
2016-06-17 12:25:50
阅读次数:
186
本文要解决的问题:
最近无意中发现有很多对Map尤其是HashMap的线程安全性的话题讨论,在我的理解中,对HashMap的理解中也就知道它是线程不安全的,以及HashMap的底层算法采用了链地址法来解决哈希冲突的知识,但是对其线程安全性的认知有限,故写这篇博客的目的就是让和我一样对这块内容不熟悉的小伙伴有一个对HashMap更深的认知。
哈希表
在数据结构中有一...
分类:
编程语言 时间:
2016-06-16 15:08:25
阅读次数:
340
1、是对HashMap的线程安全实现; 2、不同于HashTable,不是对整个HashMap中的方法使用Synchronized来保证同步; 3、通过对Map分段,在插入时只使用重用锁锁定特定的段; 4、根据Map段的数量则可以达到不同的并发数量; 5、能根据并发线程来定制段的数量; ...
分类:
其他好文 时间:
2016-06-15 10:54:58
阅读次数:
115
Java并发编程:阻塞队列 在前面几篇文章中,我们讨论了同步容器(Hashtable、Vector),也讨论了并发容器(ConcurrentHashMap、CopyOnWriteArrayList),这些工具都为我们编写多线程程序提供了很大的方便。今天我们来讨论另外一类容器:阻塞队列。 在前面我们接 ...
分类:
编程语言 时间:
2016-06-12 13:42:45
阅读次数:
175
好几天没看juc了,之前看了HashMap,还有个差不多的HashTable,二者的结构大致相同,小小的比较下2者的不同:
1.HashMap是非线程安全的,HashTable通过synchronized加锁实现线程安全。如果我们的代码里存在{get();...;put()}这种操作的话就保证不了;
2.HashMap可以存储key或value为null的值,HashTable不行;
3.初...
分类:
其他好文 时间:
2016-06-12 03:29:07
阅读次数:
171
java.util.concurrent.ConcurrentHashMap
ConcurrentHashMap extends AbstractMap
implements ConcurrentMap, Serializable {
设计首要目的:维护并发可读性(get、迭代相关);次要目的:使空间消耗比HashMap相同或更好,且支持多线程高效率的初始插入(...
分类:
其他好文 时间:
2016-06-12 02:48:45
阅读次数:
181
结构
java.util.concurrent
类 ConcurrentHashMap
java.lang.Object
java.util.AbstractMap
java.util.concurrent.ConcurrentHashMap
类型参数:K - 此映射维护的键的类型V - 映射值的类
所有已实现的接口: Serializable,
Concurr...
分类:
编程语言 时间:
2016-06-12 02:18:36
阅读次数:
262
基本原理Hashtable使用synchronized锁住整张Hash表,锁的粒度太大导致Hashtable性能低下。ConcurrentHashMap允许多个修改操作并发进行,其关键在于使用了锁分离技术。它使用了多个锁来控制对hash表的不同部分进行的修改。ConcurrentHashMap内部使用段(Segment)来表示这些不同的部分,每个段其实就是一个小的hash table,它们有自己的锁...
分类:
其他好文 时间:
2016-06-02 14:04:53
阅读次数:
287
一、HashMap简介
HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长。
HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap。
HashMap 实现了Serializable接口,因此它支持序列化,实现了Clon...
分类:
其他好文 时间:
2016-06-02 13:45:45
阅读次数:
273