多线程下:Vector、Hashtable、ArrayList、LinkedList、HashMap 性能特征
2011-02-22 09:38
495 查看
最近在研究关于多线程环境下如何提升性能,在程序中执行最多的是“查询”,但同时也要维护数据的“添加”和“删除”
目前在 Hashtable 和 HashMap 中选择。
看了jdk文档,我们知道 Hashtable是同步的,而HashMap是不同步的。
所以一开始的时候,我采用的是 Hashtable,因为程序中80%的时间是在进行“查询”,所以为了提升速度,我改为 HashMap,经过几个小时的上线测试发现一个问题:
因为我在另一个单独的线程中每隔30秒对HashMap进行数据的维护(删除数据),在运行几个小时后发现这个线程发生死锁现象。
后来我又改回采用Hashtable,运行了10个小时,目前一切正常。
结论:看来在多线程的环境下,还得用Hashtable,虽说HashMap的性能能提高一些,但是因为本身是不同步的,所以不能使用在多线程下。当然,如果只是在多线程下进行简单的“查询”,不对数据进行“添加”和“删除”,那用HashMap是可以的,并且肯定能提高性能的。
下面是我在网上搜索到的别人网友写的一些相关内容:
1、如果线程要求安全,使用Vector,Hashtable
2、如果不要求线程安全,应使用ArrayList,LinkedList,HashMap
3、如果要求键值对,则使用HashMap、Hashtable
4、如果数据很大,又要线程安全考虑Vector
访问效率最高的是ArrayList,HashTable次之
如果你会进行大量的插入/删除操作,而不是对容器中的元素进行简单的访问,那就该用LinkedList了
在单线程下:vector和hashtable已经被ArrayList和hashMap代替,所以效率是最低的,
目前在 Hashtable 和 HashMap 中选择。
看了jdk文档,我们知道 Hashtable是同步的,而HashMap是不同步的。
所以一开始的时候,我采用的是 Hashtable,因为程序中80%的时间是在进行“查询”,所以为了提升速度,我改为 HashMap,经过几个小时的上线测试发现一个问题:
因为我在另一个单独的线程中每隔30秒对HashMap进行数据的维护(删除数据),在运行几个小时后发现这个线程发生死锁现象。
后来我又改回采用Hashtable,运行了10个小时,目前一切正常。
结论:看来在多线程的环境下,还得用Hashtable,虽说HashMap的性能能提高一些,但是因为本身是不同步的,所以不能使用在多线程下。当然,如果只是在多线程下进行简单的“查询”,不对数据进行“添加”和“删除”,那用HashMap是可以的,并且肯定能提高性能的。
下面是我在网上搜索到的别人网友写的一些相关内容:
1、如果线程要求安全,使用Vector,Hashtable
2、如果不要求线程安全,应使用ArrayList,LinkedList,HashMap
3、如果要求键值对,则使用HashMap、Hashtable
4、如果数据很大,又要线程安全考虑Vector
访问效率最高的是ArrayList,HashTable次之
如果你会进行大量的插入/删除操作,而不是对容器中的元素进行简单的访问,那就该用LinkedList了
在单线程下:vector和hashtable已经被ArrayList和hashMap代替,所以效率是最低的,
相关文章推荐
- Vector和ArrayList,LinkedList,Hashtable,HashMap的区别
- Vector ArrayList linkedlist set hashtable hashmap concurrenthashmap 的区别
- Vector&Arraylist&Linkedlist ,Hashtable&HashMap
- Java集合源码学习笔记(五)ArrayList,LinkedList,Vector和Hashtable,HashMap的比较
- Java知识点Vector和ArrayList,Hashtable和HashMap,ArrayList和LinkedList的区别
- ArrayList & Vector & LinkedList & HashMap & HashTable
- Java LinkedList、ArrayList、Vector、Map、HashMap、HashTable总结
- 具体的集合类(一)ArrayList,LinkedList,Vector,HashMap,HashTable
- Java基础之ArrayList与LinkedList、Vector,以及HashMap与HashTable的区别
- LinkedList,ArrayList,Vector,HashTable,HashMap
- 集合与数组的比较、Collection与Collections的区别、ArrayList与LinkedList区别、Vector与ArrayList区别、HashMap与Hashtable
- 多线程集合Collections(Vector、Hashtable、ArrayList、LinkedList、HashMap )
- List, ArrayList, LinkedList, Vector 及 Map, HashMap, HashTable区别
- Java基础之ArrayList与LinkedList、Vector,以及HashMap与HashTable的区别
- Vector & ArrayList ,ArrayList & LinkedList,Hashtable & HashMap
- HashMap、HashTable、ArrayList、LinkedList、Vector的区别
- 【Java 集合】List(ArrayList、Vector、LinkedList)、Map(HashMap、HashTable、LinkedHashMap和TreeMap)
- 常用List(ArrayList、LinkedList、Vector),Map(Hashtable ,HashMap)分析(二)
- 各种集合小结:arrayList和linkedList,Vector;hashmap和hashtable,hashset,
- hasSet,TreeSet,ArrayList,LinkedList,Vector,HashMap,HashTable,TreeMap利用Iterator进行输出