在4线程1.6万数据的条件下,ConcurrentHashMap 存取速度是ConcurrentSkipListMap 的4倍左右。
但ConcurrentSkipListMap有几个ConcurrentHashMap 不能比拟的优点:
1、ConcurrentSkipListMap 的key是有序的。
2、ConcurrentSkipListMap 支持更高的并发。
ConcurrentSkipListMap 的存取时间是log(N),和线程数几乎无关。也就是说在数据量一定的情况下,并发的线程越多,ConcurrentSkipListMap越能体现出他的优势
ConcurrentHashMap内部使用段(Segment)来表示这些不用的部分(16)
ConcurrentHashMap内部使用段(Segment)来表示这些不用的部分,每个段其实就是一个小的HashTable,他们有自己的锁,只要多个修改操作发生在不同的段上,他们就可以并发执行。把一个整体的分成了16个段(Segment),也就是最高支持16个线程并发的修改操作。这也是在多线程场景时减少锁的粒度从而减低锁竞争的一种方案。 其代码中大多数变量都使用volatile关键字声明,目的是第一时间获取修改的内容,性能非常好。
ConcurrentSkipListMap支持并发排序功能,弥补ConcurrentHashMap。
网友评论