多线程集合Collections(Vector、Hashtable、ArrayList、LinkedList、HashMap )
来源:互联网 发布:双11淘宝交易额 编辑:程序博客网 时间:2024/06/05 02:00
在Collections类 中有多个静态方法,它们可以获取通过同步方法封装非同步集合而得到的集合:
public static Collection synchronizedCollention(Collection c) public static List synchronizedList(list l) public static Map synchronizedMap(Map m) public static Set synchronizedSet(Set s) public static SortedMap synchronizedSortedMap(SortedMap sm) public static SortedSet synchronizedSortedSet(SortedSet ss)
这些方法基本上返回具有同步集合方法版本的新类。比如,为了创建多线程安全且由ArrayList支持的List,可以使用如下代码:
List list = Collection.synchronizedList(new ArrayList());
下面是一段多线程操作集合的事例,火车票集合既有增也有减:
public static void main(String[] args) { //初始化火车票池并添加火车票:避免线程同步可采用Vector替代ArrayList HashTable替代HashMap final Vector<String> tickets = new Vector<String>(); //Map<String, String> map = Collections.synchronizedMap(new HashMap<String, String>()); for(int i = 1; i<= 1000; i++){ tickets.add("火车票"+i); }// for (Iterator iterator = tickets.iterator(); iterator.hasNext();) {// String string = (String) iterator.next();// tickets.remove(20);// } for(int i = 1; i <=10; i ++){ new Thread("线程"+i){ public void run(){ while(true){ if(tickets.isEmpty()) break; System.out.println(Thread.currentThread().getName() + "---" + tickets.remove(0)); } } }.start(); } }
1、如果线程要求安全,使用Vector,Hashtable
2、如果不要求线程安全,应使用ArrayList,LinkedList,HashMap
3、如果要求键值对,则使用HashMap、Hashtable
4、如果数据很大,又要线程安全考虑Vector
访问效率最高的是ArrayList,HashTable次之
如果你会进行大量的插入/删除操作,而不是对容器中的元素进行简单的访问,那就该用LinkedList了
在单线程下:vector和hashtable已经被ArrayList和hashMap代替,所以效率是最低的
0 0
- 多线程集合Collections(Vector、Hashtable、ArrayList、LinkedList、HashMap )
- LinkedList,ArrayList,Vector,HashTable,HashMap
- LinkedList,ArrayList,Vector,HashTable,HashMap
- ArrayList & Vector & LinkedList & HashMap & HashTable
- java集合 hashmap hashtable weakhashmap linkedlist arraylist vector
- 具体的集合类(一)ArrayList,LinkedList,Vector,HashMap,HashTable
- 多线程下:Vector、Hashtable、ArrayList、LinkedList、HashMap 性能特征
- Vector & ArrayList ,ArrayList & LinkedList,Hashtable & HashMap
- 【Java 集合】List(ArrayList、Vector、LinkedList)、Map(HashMap、HashTable、LinkedHashMap和TreeMap)
- 集合与数组的比较、Collection与Collections的区别、ArrayList与LinkedList区别、Vector与ArrayList区别、HashMap与Hashtable
- HashMap、HashTable、ArrayList、LinkedList、Vector的区别
- HashMap、HashTable、ArrayList、LinkedList、Vector的区别 .
- ArrayList Vector LinkedList 区别,HashMap,Hashtable区别
- HashMap、HashTable、ArrayList、LinkedList、Vector区别
- Vector、ArrayList、LinkedList、HashMap、TreeMap、HashTable 区别
- HashMap、HashTable、ArrayList、LinkedList、Vector区别
- Java 集合(ArrayLsit,LinkedList,Vector,HashMap--HashTable)
- 集合之LinkedList、Vector、HashMap、Hashtable
- java: 找不到符号或者包 (eg.程序包org.neo4j.ogm.annotation不存在)
- 【在路上】Learn Python The Hard Way 习题心得(ex16,17,18)
- quartz的见解
- C++ 头文件顺序和隐含依赖
- 线程与进程的区别和联系? 线程是否具有相同的堆栈? dll是否有独立的堆栈?
- 多线程集合Collections(Vector、Hashtable、ArrayList、LinkedList、HashMap )
- python动态类型小思考题
- C中的 malloc 和C++中的 new 有什么区别?
- mybatis 拦截器,改变默认行为
- 简述 C、 C++程序编译的内存分配情况?
- Android Multimedia框架总结(八)Stagefright框架之AwesomePlayer及数据解析器
- 1058. A+B in Hogwarts (20)
- 打印极值点下标
- LinearLayout 注意点