设为首页 加入收藏

TOP

Java容器类的线程安全
2014-11-23 22:03:21 】 浏览:339
Tags:Java 容器 线程 安全

  1、Java容器类的关系图


  Collection


  ├List 接口


  │├LinkedList 链表


  │├ArrayList 顺序结构动态数组类


  │└Vector 向量


  │ └Stack 栈


  └Set


  Map


  ├HashTable


  ├HashMap


  └WeakHashMap List接口


  2、线程安全的和线程不安全的


  Vector和HashMap是线程安全的


  LinkedList、ArrayList和HashMap是线程不安全的


  由于同步需要花费时间,因此线程安全的执行效率要低于线程不安全的


  3、在多线程操作


  案例:多线程操作导致List报NoSuchElementException


  java.util.NoSuchElementException


  at java.util.LinkedList.remove(LinkedList.java:788)


  at java.util.LinkedList.removeFirst(LinkedList.java:134)


  at freemarker.core.RegexBuiltins.getPattern(RegexBuiltins.java:138)


  解决方法:


  调用Collections的同步List


  List items = Collections.synchronizedList(new LinkedList ());


  public void remove() {


  if (!items.isEmpty()) {


  return items.remove(0);


  }


  }


  设置标志,同步


  LinkedList items = new LinkedList ();


  String flag="abcdef";


  public void remove() {


  synchronized(flag){


  if (!items.isEmpty()) {


  return items.removeFirst();


  }


  }


  编辑特别推荐:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇几个著名Java开源缓存框架介绍 下一篇java中使用MD5对数据密码加密

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目