线程安全14_并发容器类
2018-09-11 20:18
99 查看
Map型
ConcurrentHashMap替代了HashMap,HashTable(无序)
ConcurrentSkipListMap替代了TreeMap(有序)
ConcurrentHashMap将Hash表分成了16个segment,每个segment单独进行锁控制,从而减少了锁的密度,提高了性能。
List型
Copy On Write容器,简称COW,写时复制容器,在往容器中添加元素时,先将容器copy出一个新容器,然后将元素添加到新容器中,再将原容器的引用指向新容器。并发读的时候不需要锁定容器,因为原容器没有变化,使用的是一种读写分离的思想。由于每次更新都会复制新容器,所以如果数据量较大,并且更新操作频繁会对内存消耗很高,建议在高并发读的情况下使用。
CopyOnWriteArrayList和CopyOnWriteArraySet区别:
CopyOnWriteArraySet是基于CopyOnWriteArrayList实现的,其唯一的不同是add时调用的是CopyOnWriteArrayList的addIfAbsent方法,addIfAbsent方法采用锁保护,并创建一个新的大小+1的Object数组。遍历当前数组,如果Object数组已有了当前元素,则直接返回,如果没有,则放入Object数组尾部,并返回。从以上分析可见,CopyOnWriteSet方法每次add时都要进行数组的遍历,因为其性能会低于CopyOnWriteArrayList。
相关文章推荐
- C#转Java之路之三:多线程并发容器即线程安全的容器
- Java并发(一)——线程安全的容器(上)
- 并发容器ConcurrentHashMap与synchronized联合使用达到线程安全
- Java并发编程类学习四(线程安全的类)
- Java的同步容器和并发容器
- 互联网并发编程之一 线程安全02
- 高并发下线程安全的单例模式(最全最经典)
- 并发容器代码摘要
- 并发4-线程安全
- java并发编程之同步容器
- 同步容器与并发容器
- Java学习笔记(81)-----------并发容器之CopyOnWriteArrayList
- 【java并发】造成HashMap非线程安全的原因
- Java 集合7:丰富的并发基础构建模块1 - 容器部分
- Java并发01:进程、线程、并发、并行、多线程、线程安全、死锁、并发优缺点
- Java面试题-并发容器和框架
- Java 7之多线程并发容器 - ArrayBlockingQueue
- 为什么线程安全的ACE容器不支持[]操作符
- Java并发编程(十四)并发容器类
- 探索并发编程(二)------写线程安全的Java代码