前言
笔者在接下来这段时间将对JUC框架内的重点内容进行深度解析,由于内容颇多,需要分成多篇文章,所以在这里列一个目录,方便大家翻阅。
目录
JUC框架的基础是CAS和自旋,而CAS则是利用Unsafe
类提供的CAS操作,而原子类则依靠于CAS和自旋。下面几篇文章从源码分析JUC框架内的几个重要的原子类。
ThreadLocal本身不在JUC框架之中,但它却是一种防止多线程竞争的重要手段。
AQS(AbstractQueuedSynchronizer)向下依赖了CAS和自旋,向上则提供了一个同步队列的实现,许多JUC框架内中的类都直接使用了AQS作为内部类。下面几篇文章将从AQS提供的几种功能进行深度分析。
AQS中有些函数的具体实现细节,并不是很容易让人理解,这些地方一般都是因为考虑了同步队列变化中的中间状态。
- AQS深入理解 hasQueuedPredecessors源码分析 JDK8
- AQS深入理解 setHeadAndPropagate源码分析 JDK8
- AQS深入理解 doReleaseShared源码分析 JDK8
- AQS深入理解 shouldParkAfterFailedAcquire源码分析 状态为0或PROPAGATE的情况分析
- interrupt()中断对LockSupport.park()的影响
JUC框架中有些同步构件依赖了AQS作为实现底层,我们一般使用它们来做到多线程之间的协作。
- JUC框架 CountDownLatch源码解析 JDK8
- JUC框架 CyclicBarrier源码解析 JDK8
- JUC框架 Semaphore源码解析 JDK8
- JUC框架 ReentrantReadWriteLock源码解析 JDK8
- ReentrantReadWriteLock 深入理解读锁的非公平实现
JUC框架中也提供了各种用途的集合类。
- JUC集合类 CopyOnWriteArrayList源码解析 JDK8
- JUC集合类 CopyOnWriteArraySet源码解析 JDK8
- JUC集合类 ConcurrentSkipListMap源码解析 JDK8
- JUC集合类 ConcurrentHashMap源码解析 JDK8
- JUC集合类 ConcurrentLinkedQueue源码解析 JDK8
- JUC集合类 ConcurrentLinkedDeque源码解析 JDK8
- JUC集合类 ArrayBlockingQueue源码解析 JDK8
- JUC集合类 LinkedBlockingQueue源码解析 JDK8
- JUC集合类 LinkedBlockingDeque源码解析 JDK8
- JUC集合类 PriorityBlockingQueue源码解析 JDK8
- JUC集合类 DelayQueue源码解析 JDK8
- JUC集合类 LinkedTransferQueue源码解析 JDK8
- JUC集合类 SynchronousQueue源码解析 JDK8
最后部分将讲解线程池相关源码。
- JUC框架 从Runnable到Callable到FutureTask 使用浅析
- JUC框架 FutureTask源码解析 JDK8
- JUC框架 CompletableFuture源码解析 JDK8
- JUC线程池 ThreadPoolExecutor源码解析 JDK8
- JUC线程池 ScheduledThreadPoolExecutor源码解析 JDK8
至此,本系列文章暂告一段落,以后有机会再来补充。
另外,如果你对JUC框架的源码有什么疑问,最好是去concurrency-interest直接询问大佬,大佬们甚至是Doug Lea本人都会愿意解答的。本人的体验是一个问题去各大中文论坛提问一无所获,甚至去stackoverflow也没人回答问题,还是concurrency-interest比较靠谱。另外,提问前先在搜索引擎找找看(学会百度~),提问时用英文描述清楚(起码让外国人能看懂~)。
后记
以上文章一般多以源码分析为主,虽不敢保证完全权威,但肯定能为你对JUC的理解铺平道路。
如果对我的文章有疑问,欢迎在评论区指出。
如果觉得本人文章对你有帮助,欢迎点赞,评论,收藏。三连走起,拒绝白嫖,从我做起,博主真的很需要你的支持!
如果想要转载文章,请注明出处哦。
人若无名,专心练剑!与诸君共勉!
未完待续,To Be Continued!