java多线程同步集合是什么?并发集合是什么?

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多线程同步集合是什么

以上就是关于java多线程同步集合是什么以及并发集合是什么的主要内容了。可以看出内容还是非常详实的。如果你对java知识感兴趣,想要了解更多java常见问题,敬请关注奇Q工具网。

推荐阅读:

java同步机制实现方式volatile,详细解析

java同步机制有哪几种实现方式?同、异步有哪些区别? 

java多线程什么时候必须同步?如何同步?