高并发中如何选取容器

来源:5-8 并发容器及安全共享策略总结

WreckItRalph

2019-02-10

在类似“生产消费者”之类的问题中,如果需要对容器进行频繁的读和写操作,那么用什么容器较好
感觉在并发量不大的情况下synchronizedSortedMap 较为合适;并发量较大的话用ConcurrentHashMap或ConcurrentSkipListMap较为合适
vector和 CopyOnWriteXXX(CopeOnWriteArrayList 和CopeOnWriteSet) 一个不能保证线程的安全性,另一个对于写入操作的消耗过大而且也不能保证实时读取,故不考虑

写回答

1回答

Jimin

2019-02-11

你好,其实选择什么样的容器关键还是看使用的场景,线程安全(有些场景是不需要使用线程安全容器的)、顺序读取还是随机读取(很多都要考虑)、是否存在爆内存可能(如果有,要考虑拒绝策略及边界处理等)等,其实不同的容器都有明显自己的特性,熟练掌握了相关容器的特性,根据相关场景去选择相关的容器就可以了。这里,额外给你补充一些生产消费模型的容器:基于BlockingQueue的一些子类,他们的特性也可以多了解一下

0
0

Java高并发编程,构建并发知识体系,提升面试成功率

构建完整并发与高并发知识体系,倍增高薪面试成功率!

3923 学习 · 832 问题

查看课程