最新 | 最热门 | 最高评价

+0  无锁HashMap的原理与实现

Tag: Java语言 | 程序设计 | Hash | HashMap | Java | Performance | 多线程 | 并发
onetwogoo 发于 2013年05月30日 21:31 | 点击: 2489 | 展开摘要
 (本文由onetwogoo投稿)

在《疫苗:Java HashMap的死循环》中,我们看到,java.util.HashMap并不能直接应用于多线程环境。对于多线程环境中应用HashMap,主要有以下几种选择:

使用线程安全的java.util.Hashtable作为替代。

使用java.util.Collections.synchronizedMap方法,将已有的HashMap对象包装为线程安全的。

使用java.util.concurrent.Concurren

查看全文: http://www.udpwork.com/item/9945.html

+0  疫苗:Java HashMap的死循环

Tag: Java语言 | 程序设计 | Hash | HashMap | Java | 多线程 | 并发
陈皓 发于 2013年05月10日 08:12 | 点击: 3581 | 展开摘要
在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历过,本来觉得没什么好写的,因为Java的HashMap是非线程安全的,所以在并发下必然出现问题。但是,我发现近几年,很多人都经历过这个事(在网上查“HashMap Infinite Loop”可以看到很多人都在说这个事)所以,觉得这个是个普遍问题,需要写篇疫苗文章说一

查看全文: http://www.udpwork.com/item/9814.html

+0  Java中各种锁类型的基准性能评测

Tag: java | HashMap | lock
kafka0102 发于 2010年08月10日 23:58 | 点击: 2486 | 展开摘要
周末对Java中各种类型的锁做了基准评测。测试的条件有两个:1)是10、50、100个不同的并发线程,2)是读写比例近似1:1,10:1,100:1,1000:1。测试方法是,对各种加锁的Map方法做性能评测,它们都是实现了MapWrapper接口的封装,测试的就是Map的get和put方法。测试的锁类型有:1)hashtable:直接测试Hashtable,2)synclock:对HashMap的方法直接加synchronized(理论上性能应和Hashtable相当),3

查看全文: http://www.udpwork.com/item/2357.html

+0  [Solr源码分析]LRUCache和FastLRUCache实现分析

Tag: cache | solr | HashMap | java | 源码分析
kafka0102 发于 2010年08月09日 00:01 | 点击: 9068 | 展开摘要
在 [Solr 实践]Solr Cache使用介绍及分析 一文我有对Solr的LRUCache和FastLRUCache做了一些介绍,本文在此基础对其实现做些补充。

1、LRUCache的实现分析

在分析LRUCache前先对LinkedHashMap做些介绍。LinkedHashMap继承于HashMap,它使用了一个双向链表来存储Map中的Entry顺序关系,这种顺序有两种,一种是LRU顺序,一种是插入顺序,这可以由其构造函数public LinkedHashMap

查看全文: http://www.udpwork.com/item/2332.html

+5  分析多线程并发写HashMap线程被hang住的原因

Tag: java | HashMap
kafka0102 发于 2010年08月07日 05:05 | 点击: 19291 | 展开摘要
在blogjava上看到一文 谁能帮忙解释一下为什么这个程序会死锁?,激发了我那能害死猫的好奇,所以很费劲的琢磨了这个问题。由于涉及的内容较多,就单独发文阐述一下。

文中提到的问题程序如下:

public class TestLock {
private final HashMap map = new HashMap();
public TestLock() {
final Thread t1 = ne

查看全文: http://www.udpwork.com/item/2321.html
|<<<1>>>| 一共1页, 5条记录