如果多线程并发的访问与一个数据结构,那么很容易破坏一个数据结构。 例如,一个线程可能要向一个散列表中插入一条数据的过程中,被剥夺了控制权。如果另外一个线程也开始遍历同一个链表,很可能造成混乱,抛出异常或者陷入死循环。这就是为什么HashMap不是线程安全的原因。 一、旧的线程安全的集合 ...
.Vector:就比Arraylist多了个同步化机制 线程安全 。 .Hashtable:就比Hashmap多了个线程安全。 .ConcurrentHashMap:是一种高效但是线程安全的集合。 .Stack:栈,也是线程安全的,继承于Vector。 ...
2022-02-28 19:09 0 5245 推荐指数:
如果多线程并发的访问与一个数据结构,那么很容易破坏一个数据结构。 例如,一个线程可能要向一个散列表中插入一条数据的过程中,被剥夺了控制权。如果另外一个线程也开始遍历同一个链表,很可能造成混乱,抛出异常或者陷入死循环。这就是为什么HashMap不是线程安全的原因。 一、旧的线程安全的集合 ...
1、JDK1.5之前 旧版本的集合主要有两个Vector和Hashtable,在java.util包下。 这两个类保证线程安全都是采用synchronized修饰方法的方式。在1.5之前,效率不高,现在已基本弃用。 1.1、Vector 1.2、Hashtable 1.3 ...
线程安全 非线程安全 Collection Vector ArrayList、LinkedList HashSet ...
集合中线程安全的类有:vector,stack,hashtable,enumeration,除此之外均是非线程安全的类与接口 Collection 是对象集合, Collection 有两个子接口 List 和 Set, List 可以通过下标 (1,2..) 来取得值,值可以重复 ...
1、ArraryList相关 ArrayList是线程不安全的,在多线程下同时操作一个集合会出java.util.ConcurrentModificationException异常(并发修改异常),如下所示: 解决办法:① 、使用List<String> list ...
1.快速失败(fail-fast)和安全失败(fail-safe)? 一:快速失败(fail—fast) 在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加、删除、修改),则会抛出Concurrent Modification Exception。 原理:迭代器 ...
线程安全 首先要明白线程的工作原理,jvm有一个main memory,而每个线程有自己的working memory,一个线程对一个variable进行操作时,都要在自己的working memory里面建立 ...
线程安全与不安全集合 线程不安全集合: ArrayList LinkedList HashMap HashSet TreeMap TreeSet StringBulider 线程安全集合: Vector HashTable ...