一、同步容器

 1、vector——>arraylist

  •  vector 是线程(thread)同步(synchronized)的,所以它也是线程安全的;
  • arraylist是线程异步(asynchronized)的,是不安全的;

2、hashtable——>hashmap

  • hashtable是synchronized,这意味着hashtable是线程安全的,多个线程可以共享一个hashtable;
  • hashmap是非synchronized,这意味着hashmap是非线程安全的;

3、collections集合中——>synchronizedxxx

arraylist<object> list = new arraylist<>();
 collections.synchronizedlist(list);

 hashmap<object, object> map = new hashmap<>();
 collections.synchronizedmap(map);
 
 set<object> set = new hashset<>();
 collections.synchronizedset(set);

以synchronizedlist为例:synchronizedlist返回了synchronizedlist<>(list)),synchronizedlist又是一个内部静态类,该内部静态类中的add()、set()、get()等方法都在方法内部添加了synchronized关键字,如下图:

 

二、并发容器

 1、copyonwritearraylist

  • 写操作高效率并发并且是线程安全的;
  • 读操作无锁的arraylist;

 2、concurrenthashmap

  • 是hashmap的一个线程安全的、支持高效并发的版本,使用了锁分段技术来保证线程安全;

到此这篇关于java并发编程之同步容器与并发容器详解的文章就介绍到这了,更多相关java同步容器与并发容器内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!