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

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

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

具体内容如下:

一、同步集合类

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锁。如下图所示:

0c9595a07a6e1db46e53dbe5b7ac7785.png

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

推荐阅读:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值