
Java源码系列
Viscu
勤能补拙。
展开
-
JDK源码系列 AbstractQueuedSynchronizer源码剖析
AbstractQueuedSynchronizer源码分析AbstractQueuedSynchronizer,简称AQS,我们着重关注AQS的两个函数:acquirerelease1.acquire()1.1 addWaiter函数private AbstractQueuedSynchronizer.Node addWaiter(AbstractQueuedSynchroni...原创 2019-01-20 23:39:50 · 560 阅读 · 1 评论 -
JDK源码分析 FutureTask源码分析
文章目录前言一、Callable接口二、Future接口三、FutureTask源码分析3.1 Future继承结构图3.2 参数介绍3.3 构造函数3.4. FutureTask的API源码分析3.4.1. run():3.4.2 get()3.4.3. cancel前言一般我们创建线程的方式主要有两种,一种是直接继承Thread类,一种是实现Runnable接口。但是这两种方法是有缺陷的,...原创 2019-01-29 22:55:45 · 366 阅读 · 0 评论 -
JDK源码分析系列 AQS续篇Condition源码浅析
文章目录前言Condition以及其具体实现类源码分析一、Condition的继承关系类图二、Condition三、ConditionObject实现3.1 参数3.2 ConditionObject的核心API前言我们在Synchronized中了解到,如果我们调用await()方法的话,会将当前线程阻塞并且放置到等待队列中,唤醒的方法有notify(),notifyAll(),这些是jav...原创 2019-01-17 02:52:33 · 448 阅读 · 0 评论 -
JDK源码系列 Semaphore源码分析
文章目录前言Semaphore源码分析(基于JDK1.8)一、Semaphore整体结构二、内部类Sync2.1 NofairSync2.2 FairSync2.3 公平锁和非公平锁的差异三、Semaphore主要方法3.1 构造方法3.2 acquire3.3 tryAcquire3.4 release3.4 其余方法3.5 应用场景前言Semaphore(信号量),是用来控制同时访问特定资...原创 2019-01-27 16:27:42 · 368 阅读 · 0 评论 -
JDK源码系列 CyclicBarrier源码分析
文章目录前言CyclicBarrier源码分析(基于JDK1.8)CyclicBarrier整体结构一、参数二、构造函数三、CyclicBarrier的核心API3.1 await3.2. 其他API四、应用五、和CountDownLatch的区别前言CyclicBarrier的字面意思是可循环使用(Cycli)的屏障(Barrier)。它的作用就是,让一组线程到达一个屏障(同步点)时被阻塞,...原创 2019-01-26 23:53:59 · 310 阅读 · 0 评论 -
JDK源码系列 ThreadPoolExecutor源码分析
文章目录ThreadPoolExecutor源码分析1. ThreadPoolExecutor架构1.1 Executor1.2. ExecutorService1.3. ThreadPoolExecutor1.3.1. 构造方法1.3.2. 参数分析1.3.3. ThreadPoolExecutor核心API分析1.3.4. Worker内部类1.3.5. shutdown和shutdownNo...原创 2019-01-15 23:33:16 · 382 阅读 · 0 评论 -
JDK源码系列 ThreadLocalMap源码剖析
ThreadLocalMap源码实现ThreadLocalMap是Thread内部存储ThreadLocal的数据结构,本质上就是一个Map,不过它又和我们熟悉的java.util.map并不太相同,我们来了解一下ThreadLocalMap的具体实现。1.内部存储结构ThreadLocalMap的内部存储结构是一个Entry数组,但是它和hashMap不太一样,它没有next指针,说明它...原创 2019-01-09 21:09:10 · 361 阅读 · 0 评论 -
JDK源码系列 ConcurrentHashMap源码分析
文章目录ConcurrentHashMap源码分析ConcurrentHashMap源码分析1. Segment类1.1 Segment参数分析:1.2 Segment构造器1.3 Segment的核心API2.ConcurrentHashMap相关API2.1 ConcurrentHashMap参数2.2. ConcurrentHashMap构造器ConcurrentHashMap源码分析之...原创 2019-01-14 01:42:52 · 288 阅读 · 0 评论 -
JDK源码系列 AQS续篇共享锁源码实现分析
文章目录CountDownLatch源码分析CountDownLatch整体结构Sync内部类CountDownLatch核心API1.1 await()CountDownLatch源码分析之前分析了ReetrantLock源码,可重入锁是基于AQS的独占锁实现。现在我们来分析一下AQS的共享锁模式的实现,由于CountDownLatch便是AQS共享锁模式实现的,我们就从CountDownL...原创 2019-01-23 20:29:33 · 516 阅读 · 0 评论 -
JDK源码系列 ReentrantLock 公平锁和非公平锁的实现原理
ReetrantLock公平锁和非公平锁的实现顾名思义,ReetrantLock就是可重入锁的意思,Java关键字Synchronized也是实现的可重入锁。首先我们来看一下它们两之间的异同点。ReetrantLock和Synchronized的异同点:特性SynchronizedReetrantLock是否相同可重入是是√响应中断否是×超时...原创 2019-01-11 01:02:07 · 1255 阅读 · 1 评论 -
JDK源码系列 ArrayBlockingQueue源码浅析
文章目录前言ArrayBlockingQueue源码分析一、继承结构图二、ArrayBlockingQueue2.1. 参数介绍2.2. 构造函数2.3. 核心API实现前言在之前分析线程池ThreadExecutorPool的时候,我们就有接触到阻塞队列这一个概念。所谓阻塞队列,就是一个在传统队列基础上,支持两个附加操作的队列。而这两个附加的操作支持阻塞的插入和移除方法。支持阻塞的插入方...原创 2019-01-31 00:39:58 · 463 阅读 · 0 评论