关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

java多线程同步集合是什么?(java并发库的线程同步类有哪些)

发布时间:2022-06-30 17:38:52

java中关于集合的内容也是十分丰富的,而且相关的知识点也是十分多的。多线程集合所涵盖的范围是十分广阔的。今天就来为大家介绍一下,java多线程同步集合是什么以及并发集合是什么?一起来看看吧。

首先我们需要知道的是,无论是同步集合还是并发集合他们都支持线程安全,他们之间主要的区别体现在性能和可扩展性,还有他们如何实现的线程安全。

具体内容如下:

一、同步集合类

1.hashtable

2.vector

3.同步集合包装类,Collections.synchronizedMap()和Collections.synchronizedList()

二、 并发集合类

1.ConcurrentHashMap

2.CopyOnWriteArrayList

3.CopyOnWriteHashSet

三、性能

同步集合比并发集合会慢得多,主要原因是锁,同步集合会对整个May或List加锁

四、并发集合的实现原理

1.ConcurrentHashMap:把整个Map划分成几个片段,只对相关的几个片段上锁,同时允许多线程访问其他未上锁的片段。

2.CopyOnWriteArrayList:允许多个线程以非同步的方式读,当有线程写的时候它会将整个List复制一个副本给它。如果在读多写少这种对并发集合有利的条件下使用并发集合,这会比使用同步集合更具有可伸缩性。

五、 并发集合的使用建议

1.一般不需要多线程的情况,只用到HashMap、ArrayList,只要真正用到多线程的时候就一定要考虑同步。

2.ConcurrentHashMap实现原理

ConcurrentHashMap是由Segment数组结构和HashEntry数组结构组成。Segment是一种可重入锁ReentrantLock,在ConcurrentHashMap里扮演锁的角色,HashEntry则用于存储键值对数据。

一个ConcurrentHashMap里包含一个Segment数组,Segment的结构和HashMap类似,是一种数组和链表结构, 一个Segment里包含一个HashEntry数组,每个HashEntry是一个链表结构的元素, 每个Segment守护者一个HashEntry数组里的元素,当对HashEntry数组的数据进行修改时,必须首先获得它对应的Segment锁。如下图所示:

java多线程同步集合是什么



相关推荐

【2022年的云计算虚拟化市场现状和发展(云计算未来市场) >>点击查看详情<<

【习近平向“全球发展:共同使命与行动价值”智库媒体高端论坛致贺信 >>点击查看详情<<

/template/Home/Redyun/PC/Static