并发容器(一):普通容器&&同步容器&&并发容器

9 篇文章 0 订阅

前言

之前我们学习过了集合,并发编程,现在我们来学习并发容器,在并发编程中,经常听到Java集合类,同步容器,并发容器,那么他们之间有哪些分类,优劣呢,我们先把这个框架给分清楚了,这样后面学习的时候不会乱。

集合容器

大家熟知的集合类ArrayList,LinkedList,HashMap这些容器这些容器都是非线程安全的,如果多个线程并发访问这些容器时,会出现问题。因此,在编写程序时,如果是在多线程环境下,必需要求程序员手动地在任何访问到这些容器的地方进行同步处理,但是这样使用起来十分麻烦。

同步容器

基于集合容器出现的问题,Java给用户提供了同步容器。
可以简单理解为通过synchronized来实现同步的容器。主要分类为:
1.Vector
2.Stack
3.HashTable
4.Collections.synchronized方法生成
举个例子:
在这里插入图片描述
在这里插入图片描述
我们可以看到,这些容器实现线程安全的方式就是将它们的封装起来,并在需要同步的方法上添加关键字synchronized。
只是,这样做的代价是削弱了并发性,当多个线程共同竞争容器级的锁时,吞吐量就会降低。

并发容器

为了解决同步容器的性能问题,并发容器出现了。
Java.util.concurrent包下提供了多种并发容器。
并发容器是专门针对多线程并发设计的,使用了锁分段技术,只对操作的位置进行同步操作,其他没有操作的位置可以被其他线程访问,提高了程序的吞吐量。
采用了CAS算法和部分代码使用synchronized锁保证线程安全。

综上来说:
1.单线程中操作普通容器时,代码都是串行执行,同一时刻只能put或get一个数据到容器中
2.多线程中操作同步容器时,多个线程排队去执行,同一时刻也是只能put或get一个数据到同步容器中
3.在多线程中操作并发容器时,可以多个线程同时去执行,同一时刻可以有多个线程去put或get多个数据到并发容器中

结构上来说呢JUC安全集合有三大类:Blocking类,CopyOnWrite类,Concurrent类,后面我们会对每个类里面重点的集合进行分析。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值