从JDK1.2起,就有了HashMap,正如前一篇文章所说,HashMap不是线程安全的,因此多线程操作时需要格外小心。 在JDK1.5中,伟大的Doug Lea给我们带来了concurrent包,从此Map也有安全的了。 ConcurrentHashMap具体是怎么实现线程安全的呢,肯定不可能是每
分类:
其他好文 时间:
2016-03-12 17:16:50
阅读次数:
189
本文转载自:http://www.cnblogs.com/dolphin0520/p/3932906.html Java并发编程(十一):阻塞队列(转载) 在前面几篇文章中,我们讨论了同步容器(Hashtable、Vector),也讨论了并发容器(ConcurrentHashMap、CopyOnWr
分类:
编程语言 时间:
2016-03-08 13:34:20
阅读次数:
254
1. HashMap Entry,一对kv就是一个Entry,还包括一些next指针,用来解决散列冲突。 table,内部用来存储Entry的数组,resize时候table会成倍扩容。 容量,table数组的长度。 装填因子,当key的数量大于table.length*装填因子就要进行扩容,默认7
分类:
编程语言 时间:
2016-02-26 20:32:01
阅读次数:
204
ConcurrentHashMap是线程安全的HashMap的实现。 put(Object key, Object value): ConcurrentHashMap并没有在此方法上加上synchronized,首先判断value是否为null,如为null,则抛出NullPointerExcept
分类:
其他好文 时间:
2016-02-22 19:16:22
阅读次数:
143
为并发吞吐性能所做的优化 ConcurrentHashMap使用了一些技巧来获取高的并发性能,同时避免了锁。这些技巧包括: 为不同的Hash bucket(所谓hash bucket即不同范围的key的hash值)使用多个写锁; 利用JMM(Java Memory Model,java内存模型)的不
分类:
其他好文 时间:
2016-02-16 23:25:42
阅读次数:
187
海量数据的解决方案 缓存和页面静态化 缓存可以使用map(ConcurrentHashMap)直接保存在内存中,或者使用缓存框架Ehcache,Memcache,Redis等。缓存最重要的是缓存的创建时间和失效机制。缓存应该把空值定义一个类型,防止查到空的缓存后频繁查找数据库查找值,缓存适用于实时性
分类:
其他好文 时间:
2016-02-05 19:14:43
阅读次数:
216
1、guava cache当下最常用最简单的本地缓存线程安全的本地缓存类似于ConcurrentHashMap(或者说成就是一个ConcurrentHashMap,只是在其上多添加了一些功能)2、使用实例具体在实际中使用的例子,去查看《第七章 企业项目开发--本地缓存guava cache》,下面只...
分类:
系统相关 时间:
2016-01-19 19:20:40
阅读次数:
271
注:在阅读本章之前,先要了解Java内存模型,见上一章《附1 Java内存模型与共享变量可见性》,链接如下:http://www.cnblogs.com/java-zhao/p/5124725.html1、volatile用法具体的用法可以参照《第二章 ConcurrentHashMap源码解析》中...
分类:
其他好文 时间:
2016-01-12 22:52:44
阅读次数:
180
简单的Map缓存机制实现大致思路是用一个单例的Map实现,当然此Map得是线程安全的--ConcurrentHashMap原本项目需求是缓存十条消息,所以打算用Map实现缓存机制。中途夭折下面具体尚未实现。。。当然此代码仞为半成品,具体得根据项目需求采用不同的原则清除缓存package per.zw...
分类:
其他好文 时间:
2016-01-12 01:08:13
阅读次数:
233
注:本系列博客主要参考于《分布式Java应用:基础与实践》,林昊 著1、常用的并发集合类ConcurrentHashMap:线程安全的HashMap的实现CopyOnWriteArrayList:线程安全且在读操作时无锁的ArrayListCopyOnWriteArraySet:基于CopyOnWr...
分类:
编程语言 时间:
2016-01-08 13:21:17
阅读次数:
183