JDK源码分析
WriteOnRead
微信公众号:WriteOnRead 。欢迎关注
展开
-
JDK源码分析-ReentrantReadWriteLock
概述前面分析过 ReentrantLock「JDK源码分析-ReentrantLock」,它是一种互斥的可重入锁,可用于处理并发场景下的线程安全问题。而很多时候会出现“读多写少”的情况,若用 ReentrantLock 会降低并发量,此时就比较适合 ReentrantReadWriteLock 出场了。ReentrantReadWriteLock 是读写锁,它维护了一对锁:一...原创 2019-11-19 08:00:00 · 1887 阅读 · 8 评论 -
JDK源码分析-ScheduledThreadPoolExecutor
概述ScheduledThreadPoolExecutor 也是一个线程池类,是线程池类ThreadPoolExecutor 的子类。除了ThreadPoolExec...原创 2019-10-28 08:00:00 · 182 阅读 · 0 评论 -
JDK源码分析-DelayQueue
概述DelayQueue 也是一种队列,它内部的元素有“延迟”,也就是当从队列中获取元素时,如果它的延迟时间未到,则无法取出。DelayQueue 的类签名和继承结构如下...原创 2019-10-16 08:00:00 · 199 阅读 · 0 评论 -
JDK源码分析-ScheduledExecutorService
概述接口的继承结构如下:下面分析这几个接口的定义。Executor从名字来看,Executor 可译为“执行器”,它的作用就是执行任务。该接口只有一个 execute 方...原创 2019-09-25 08:00:00 · 404 阅读 · 0 评论 -
JDK源码分析-FutureTask
概述FutureTask 是一个可取消的、异步执行任务的类,它的继承结构如下:它实现了 RunnableFuture 接口,而该接口又继承了 Runnable 接口和 Future 接口,因此 FutureTask 也具有这两个接口所定义的特征。FutureTask 的主要功能:1. 异步执行任务,并且任务只执行一次;2. 监控任务是否完成、取消任务;3. 获取...原创 2019-09-12 08:00:00 · 337 阅读 · 0 评论 -
JDK源码分析-ThreadPoolExecutor
概述ThreadPoolExecutor 是 JDK 中线程池的实现类,它的继承结构如下:本文主要分析ThreadPoolExecutor类的主要方法和实现原理(部分...原创 2019-08-28 08:00:00 · 183 阅读 · 0 评论 -
JDK源码分析-PriorityBlockingQueue
概述前文「JDK源码分析-PriorityQueue」分析了优先队列 PriorityQueue,它既不是阻塞队列,而且线程不安全。本文分析线程安全的阻塞优先队列 Pri...原创 2019-08-14 08:30:00 · 239 阅读 · 0 评论 -
JDK源码分析-PriorityQueue
概述PriorityQueue 意为优先队列,表示队列中的元素是有优先级的,也就是说元素之间是可比较的。因此,插入队列的元素要实现 Comparable 接口或者 Com...原创 2019-08-09 08:00:00 · 242 阅读 · 0 评论 -
JDK源码分析-LinkedBlockingQueue
概述前文「JDK源码分析-ArrayBlockingQueue」分析了 ArrayBlockingQueue 的代码实现,LinkedBlockingQueue 也是阻塞...原创 2019-08-02 08:00:00 · 430 阅读 · 0 评论 -
JDK源码分析-ArrayBlockingQueue
概述前文「JDK源码分析-BlockingQueue」简要分析了 BlockingQueue 接口的主要方法,ArrayBlockingQueue 就是该接口的一个主要实...原创 2019-07-24 08:00:00 · 385 阅读 · 0 评论 -
JDK源码分析-BlockingQueue
概述BlockingQueue 意为“阻塞队列”,它在 JDK 中是一个接口。所谓阻塞,简单来说就是当某些条件不满足时,让线程处于等待状态。例如经典的“生产者-消费者”模...原创 2019-07-17 08:00:00 · 201 阅读 · 0 评论 -
JDK源码分析-Semaphore
概述Semaphore 是并发包中的一个工具类,可理解为信号量。通常可以作为限流器使用,即限制访问某个资源的线程个数,比如用于限制连接池的连接数。打个通俗的比方,可以把 ...原创 2019-07-10 08:00:00 · 127 阅读 · 0 评论 -
JDK源码分析-CyclicBarrier
概述CyclicBarrier 是并发包中的一个工具类,它的典型应用场景为:几个线程执行完任务后,执行另一个线程(回调函数,可选),然后继续下一轮,如此往复。打个通俗的比...原创 2019-07-05 08:00:00 · 164 阅读 · 0 评论 -
JDK源码分析-CountDownLatch
概述CountDownLatch 是并发包中的一个工具类,它的典型应用场景为:一个线程等待几个线程执行,待这几个线程结束后,该线程再继续执行。简单起见,可以把它理解为一个...原创 2019-06-28 08:00:00 · 196 阅读 · 0 评论 -
JDK源码分析-ReentrantLock
概述在 JDK 1.5 以前,锁的实现只能用 synchronized 关键字;1.5 开始提供了 ReentrantLock,它是API 层面的锁。先看下 Reent...原创 2019-06-21 08:00:00 · 173 阅读 · 0 评论 -
JDK源码分析-AbstractQueuedSynchronizer(2)
概述前文「JDK源码分析-AbstractQueuedSynchronizer(1)」初步分析了 AQS,其中提到了 Node 节点的「独占模式」和「共享模式」,其实 A...原创 2019-06-04 08:00:00 · 348 阅读 · 0 评论 -
JDK源码分析-AbstractQueuedSynchronizer(1)
概述前文「JDK源码分析-Lock&Condition」简要分析了 Lock 接口,它在 JDK 中的实现类主要是 ReentrantLock (可译为“重入锁”...原创 2019-05-31 08:00:00 · 365 阅读 · 0 评论 -
JDK源码分析-Lock&Condition
概述涉及多线程问题,往往绕不开「锁」。在 JDK 1.5 之前,Java 通过 synchronized 关键字来实现锁的功能,该方式是语法层面的,由 JVM 实现。JD...原创 2019-05-24 08:00:00 · 151 阅读 · 0 评论 -
JDK集合框架小结
前面的一些文章主要分析了 Java 集合框架(Java Collections Framework, JCF)中常用的类和接口,本文打算做个整体的小结。JCF 主要包括 ...原创 2019-05-20 08:00:00 · 348 阅读 · 0 评论 -
JDK源码分析-HashMap(2)
前文「JDK源码分析-HashMap(1)」分析了 HashMap 的内部结构和主要方法的实现原理。但是,面试中通常还会问到很多其他的问题,本文简要分析下常见的一些问题。...原创 2019-05-14 08:00:00 · 183 阅读 · 0 评论 -
JDK源码分析-Hashtable
概述与 HashMap 类似,Hashtable 也是散列表的实现。它的内部结构可以理解为「数组 + 链表」的形式,结构示意图如下:Hashtable 的类继承结构与签名...原创 2019-05-05 08:00:00 · 137 阅读 · 0 评论 -
JDK源码分析-LinkedHashMap
概述前文「JDK源码分析-HashMap(1)」分析了 HashMap 主要方法的实现原理(其他问题以后分析),本文分析下 LinkedHashMap。先看一下 Link...原创 2019-04-29 08:00:00 · 209 阅读 · 0 评论 -
JDK源码分析-TreeMap(2)
前文「JDK源码分析-TreeMap(1)」分析了TreeMap的一些方法,本文分析其中的增删方法。这也是红黑树插入和删除节点的操作,由于相对复杂,因此单独进行分析。...原创 2019-04-16 08:00:00 · 159 阅读 · 0 评论 -
JDK源码分析-TreeMap(1)
概述前面数据结构与算法笔记对红黑树进行了分析,而TreeMap 内部就是基于红黑树实现的。示意图:它的查找、插入、删除操作的时间复杂度均为O(logn)。TreeMa...原创 2019-04-08 08:00:00 · 181 阅读 · 0 评论