前言 本文主要介绍TreeMap、HashMap、LinkedHashMap和ConcurrentHashMap。他们之间的大致关系如下图所示: 这四种Map各自的特点如下: HashMap作为编程的首选项,速度最快; LinkedHashMap 取“键值对”的顺序是其插入的顺序,速度比HashMa ...
分类:
其他好文 时间:
2018-04-21 14:30:56
阅读次数:
146
被问到本地缓存设计,有点蒙,事后反应过来,何必一个Map呢,两个就可以解决了。真是当时脑子短路了。 package cache; import java.util.Map;import java.util.concurrent.ConcurrentHashMap; public class MyCa ...
分类:
其他好文 时间:
2018-04-16 22:20:27
阅读次数:
172
前言 声明,本文用的是jdk1.8 前面章节回顾: "Collection总览" "List集合就这么简单【源码剖析】" "Map集合、散列表、红黑树介绍" "HashMap就是这么简单【源码剖析】" "LinkedHashMap就这么简单【源码剖析】" "TreeMap就这么简单【源码剖析】" 本 ...
分类:
其他好文 时间:
2018-04-14 14:00:07
阅读次数:
198
1.减小锁持有的时间 比如100个人去银行办理业务,要填一百张表,但是只有一支笔,那么很显然,每个人用笔的时间越短,效率也就月高:看代码: 注意:减少锁的持有时间有助于降低锁冲突的可能性,进而提升系统的并发能力 2.减小锁的力度 concurrentHashMap的实现,他的内部被分为了若干个晓得h ...
分类:
其他好文 时间:
2018-04-13 17:53:56
阅读次数:
195
了解HashMap的人都知道HashMap是线程不安全的(多线程下的put方法达到一定大小,引发rehash,导致闭链,最终占满CPU),同时线程安全的HashTable效率又令人望而却步(每个方法都进行同步,效率低下),所以在这种情境下为并发而生的ConcurrentHashMap就应运而生! 接 ...
分类:
其他好文 时间:
2018-04-12 22:23:44
阅读次数:
176
Map即映射表一般称为散列表。开发中常用到这种数据结构,Java中HashMap和ConcurrentHashMap被用到的频率较高,本文重点说下HashMap的实现原理以及设计思路。 HashMap的本质是一个数组,数组的每个索引被称为桶,每个桶里放着一个单链表,一个节点连着一个节点。很明显通过下 ...
分类:
其他好文 时间:
2018-04-03 21:57:11
阅读次数:
169
1.HashMap 线程不安全,所以性能高,可以通过继承collection来调用方法实现线程安全。 2.Hashtable 线程安全 3.concurrentHashMap 线程安全的,在多线程下效率更高。、 注:hashtable:使用一把锁处理并发问题,当有多个线程访问时,需要多个线程竞争一把 ...
分类:
其他好文 时间:
2018-04-01 10:43:19
阅读次数:
914
ConcurrentHashMap 源码分析 1. 前言 终于到这个类了,其实在前面很过很多次这个类,因为这个类代码量比较大,并且涉及到并发的问题,还有一点就是这个代码有些真的晦涩,不好懂。前前后后大概花了三天的时间看完的一些重要操作,接着今天来整理一下。 <! more ...
分类:
其他好文 时间:
2018-03-29 19:13:10
阅读次数:
143
HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长。 HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap。 HashMap ...
分类:
其他好文 时间:
2018-03-28 20:21:18
阅读次数:
174
一、相关概念 1、Map的概念 javadoc中对Map的解释如下: An objectthat maps keys to values . Amap cannot contain duplicatekeys; each key can map to at most one value.This i ...
分类:
其他好文 时间:
2018-03-26 23:34:52
阅读次数:
269