我是猪弟,猪在我心中不是蠢的代名词
而是懒的代名词
微信公众号:glmapper工做室 java
在以前的学习过程当中,发现要学的东西越学越多,Java&计算机知识体系之大,要想学完谈何容易,可是总结下来,在互联网中有三大滚轮:分布式、高并发、中间件,一口气瘦不成一道闪电,必须逐一攻破。安全
想写高并发好久了,可是这里面有不少东西,真滴难! 今天总算是要开篇了,回想起来真的就像作梦同样。微信
先来看一下并发包的总体结构: 数据结构
java.util.concurrent.ConcurrentHashMap
等)而后看一下中间层:多线程
AbstractQueueSynchronizer
):抽象队列同步器,AQS是JUC同步器的基石,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如经常使用的ReentrantLock、Condition 、Semaphore 、ReentrantReadWriteLock 、CyclicBarrier 、CountDownlatch
等java.util.concurrent.atomic
包下的原子变量类而后看最底层:并发
volatile
语义,禁用指令重排序,进而保证有序性CompareAndSwap
,一种基于硬件的乐观锁实现,原理是“比较交换”,保证变量操做的原子性,可是存在 ABA
的问题。为了防止看客们由于难以理解的底层原理以为枯燥难懂【AQS真的挺很差理解的】,文章准备自顶而下来说述并发包的内容,而后在其中穿插一些底层的内容,最后不知不觉中底层就已经讲完了。app
- 介绍常见同步器组件(并发工具类)的用法和实践:
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