『梦话高并发』J.U.C@并发包整体结构

我是猪弟,猪在我心中不是蠢的代名词
而是懒的代名词


微信公众号:glmapper工作室

在之前的学习过程中,发现要学的东西越学越多,Java&计算机知识体系之大,要想学完谈何容易,但是总结下来,在互联网中有三大滚轮:分布式高并发中间件,一口气瘦不成一道闪电,必须逐一攻破。

想写高并发很久了,但是这里面有很多东西,真滴难! 今天总算是要开篇了,回想起来真的就像做梦一样。

1、并发包整体结构

先来看一下并发包的整体结构:

整体结构分为三层,先看一下顶层:

  • Lock:锁,实现和synchronized关键字相同的功能和语义
  • Synchronizer:同步器,保证线程同步,就是按照预定的先后顺序进行,线程同步的机制主要有:临界区、互斥量、事件、信号量四种方式,虽然java中有许多同步器,并且功能上各不相同,但它们的内部设计上却差别不大
  • BlockingQueue:阻塞队列,是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,阻塞队列就是生产者存放元素的容器,也是消费者获取元素的容器
  • Executor:执行器,与线程池相关
  • 并发容器:线程安全的并发访问容器(如:java.util.concurrent.ConcurrentHashMap等)

然后看一下中间层:

  • AQS(AbstractQueueSynchronizer):抽象队列同步器,AQS是JUC同步器的基石,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock、Condition 、Semaphore 、ReentrantReadWriteLock 、CyclicBarrier 、CountDownlatch
  • 非阻塞数据结构:基础数据结构
  • 原子变量类:java.util.concurrent.atomic包下的原子变量类

然后看最底层:

  • volatile:保证共享变量的可见性,对单个读/写具有原子性,JVM底层采用“内存屏障”来实现volatile语义,禁用指令重排序,进而保证有序性
  • CAS:CompareAndSwap,一种基于硬件的乐观锁实现,原理是“比较交换”,保证变量操作的原子性,但是存在 ABA 的问题。

2、系列文章内容规划

为了防止看客们因为难以理解的底层原理觉得枯燥难懂【AQS真的挺不好理解的】,文章准备自顶而下来讲述并发包的内容,然后在其中穿插一些底层的内容,最后不知不觉中底层就已经讲完了。

  • 介绍常见同步器组件(并发工具类)的用法和实践:ReentrantLock、Condition 、Semaphore 、ReentrantReadWriteLock 、CyclicBarrier 、CountDownlatch 、Phaser 、Exchanger
  • 介绍CAS、CLH锁和AQS原理
  • 并发工具类源码分析:ReentrantLock、Condition 、Semaphore 、ReentrantReadWriteLock 、CyclicBarrier 、CountDownlatch 、Phaser 、Exchanger
  • 并发容器源码分析:ConcurrentHashMap 、ConcurrentLinkedQueue 、ConcurrentSkipListMap
  • 阻塞队列源码分析:ArrayBlockingQueue 、PriorityBlockingQueue 、DelayQueue 、SynchronousQueue 、LinkedTransferQueue 、LinkedBlockingDeque
  • 执行器使用和源码分析:ThreadPoolExecutor 、ScheduledThreadPoolExecutor
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值