JDK源码那些事儿之传说中的AQS-独占锁

2020-10-24
阅读 14 分钟
1.1k
上一篇文章中笔者已经介绍过AQS的基础知识,但是更加具体的源码实现还未涉及,本篇文章笔者就结合具体的AQS实现类来聊一聊AQS的独占锁实现过程

JDK源码那些事儿之传说中的AQS-概览

2020-07-04
阅读 6 分钟
1k
从这篇文章开始分析JDK源码中AQS的底层实现原理,作为多线程访问共享资源的同步器框架基础实现,涉及到的东西还是比较多的,一起来看看传说中的AQS实现吧

JDK源码那些事儿之LockSupport

2020-05-10
阅读 7 分钟
1k
前面一篇文章中说明了Object的阻塞唤醒机制,今天我们要讲解另一个类LockSupport,在AQS中你能看见它的身影,所以需要提前了解其实现和使用机制,便于后面深入AQS的学习

JDK源码那些事儿之万物之源Object

2020-04-29
阅读 5 分钟
1.1k
从这篇文章开始进行AQS相关的学习,如果你还不明白什么是AQS,可以先去了解下,由于涉及的源码众多,笔者会一步一步进行深入说明整理,在学习AQS前,有很多基础知识是需要我们先去了解的,比如本文所说的Object

JDK源码那些事儿之神秘的ThreadLocal下篇

2020-03-28
阅读 15 分钟
1.4k
上一篇文章中说明了ThreadLocal的使用,部分源码实现以及Thread,ThreadLocal,ThreadLocalMap三者之间的关联关系,其中核心实现ThreadLocalMap将在本篇文章中进行讲解,让我们一起来探究下jdk中的ThreadLocalMap是如何实现的

JDK源码那些事儿之神秘的ThreadLocal上篇

2020-03-15
阅读 10 分钟
1.1k
在java中,ThreadLocal算是一个比较神秘的类了,我相信如果没接触过Spring源码或者一直在做CRUD操作的开发者一般也很少能接触到它,但是面试时却经常被问到,其实对于更深层次的学习,是需要去了解其使用和实现的,今天就一起了解下这个神秘的ThreadLocal

JDK源码那些事儿之FutureTask

2020-02-28
阅读 14 分钟
1.1k
上一篇文章中我们已经介绍了ThreadPoolExecutor线程池,在通过submit方法提交执行任务时曾提及可以跟踪任务执行状态的FutureTask,那么在jdk中是如何实现的呢?

JDK源码那些事儿之ThreadPoolExecutor

2020-02-18
阅读 20 分钟
1.3k
前面的文章中分析了Thread的源码,并介绍了其基本应用,然而在实际的企业级应用中执行任务的线程很少直接通过创建Thread,实现run方法的方式完成,通常是通过线程池的方式提交任务来更好的利用资源,进一步简化线程的使用,并防止线程资源的滥用。今天我们就一起来学习下ThreadPoolExecutor的源码,看一看jdK中线程池是...

JDK源码那些事儿之浅析Thread下篇

2020-01-12
阅读 20 分钟
1.9k
上一篇文章对Thread的状态转换和其中的部分源码进行了一个说明,今天继续对Thread源码进行解读,有很多涉及到底层的知识,笔者这里也只能进行简单了解,一起看一看吧

JDK源码那些事儿之浅析Thread上篇

2019-12-29
阅读 10 分钟
1.6k
JAVA中多线程的操作对于初学者而言是比较难理解的,其实联想到底层操作系统时我们可能会稍微明白些,对于程序而言最终都是硬件上运行二进制指令,然而,这些又太过底层,今天来看一下JAVA中的线程,浅析JDK源码中的Thread类,之后能帮助我们更好的处理线程问题

JDK源码那些事儿之ConcurrentLinkedDeque

2019-12-08
阅读 22 分钟
1.4k
非阻塞队列ConcurrentLinkedQueue我们已经了解过了,既然是Queue,那么是否有其双端队列实现呢?答案是肯定的,今天就继续说一说非阻塞双端队列实现ConcurrentLinkedDeque

JDK源码那些事儿之ConcurrentLinkedQueue

2019-11-09
阅读 14 分钟
1.3k
阻塞队列的实现前面已经讲解完毕,今天我们继续了解源码中非阻塞队列的实现,接下来就看一看ConcurrentLinkedQueue非阻塞队列是怎么完成操作的

JDK源码那些事儿之LinkedBlockingDeque

2019-11-02
阅读 13 分钟
2k
阻塞队列中目前还剩下一个比较特殊的队列实现,相比较前面讲解过的队列,本文中要讲的LinkedBlockingDeque比较容易理解了,但是与之前讲解过的阻塞队列又有些不同,从命名上你应该能看出一些端倪,接下来就一起看看这个特殊的阻塞队列

JDK源码那些事儿之LinkedTransferQueue

2019-10-26
阅读 21 分钟
1.4k
在JDK8的阻塞队列实现中还有两个未进行说明,今天继续对其中的一个阻塞队列LinkedTransferQueue进行源码分析,如果之前的队列分析已经让你对阻塞队列有了一定的了解,相信本文要讲解的LinkedTransferQueue的源码也能很快被理解,接下来一起学习吧

JDK源码那些事儿之DelayQueue

2019-09-28
阅读 12 分钟
2.2k
作为阻塞队列的一员,DelayQueue(延迟队列)由于其特殊含义而使用在特定的场景之中,主要在于Delay这个词上,那么其内部是如何实现的呢?今天一起通过DelayQueue的源码来看一看其是如何完成Delay操作的

JDK源码那些事儿之SynchronousQueue下篇

2019-09-15
阅读 14 分钟
1.3k
之前一篇文章已经讲解了阻塞队列SynchronousQueue的大部分内容,其中默认的非公平策略还未说明,本文就紧接上文继续讲解其中的非公平策略下的内部实现,顺便简单说明其涉及到的线程池部分的使用

JDK源码那些事儿之SynchronousQueue上篇

2019-09-07
阅读 18 分钟
1.6k
今天继续来讲解阻塞队列,一个比较特殊的阻塞队列SynchronousQueue,通过Executors框架提供的线程池cachedThreadPool中我们可以看到其被使用作为可缓存线程池的队列实现,下面通过源码来了解其内部实现,便于后面帮助我们更好的使用线程池

JDK源码那些事儿之PriorityBlockingQueue

2019-08-24
阅读 16 分钟
1.7k
今天继续说一说阻塞队列的实现,今天的主角就是优先级阻塞队列PriorityBlockingQueue,从命名上看觉得应该是有序的,毕竟是优先级队列,那么实际上是什么情况,我们一起看下其内部实现,提前说明下,因为PriorityBlockingQueue涉及到了堆排序的相关使用,如果没了解清楚,可以参考我之前写的关于堆排序的相关说明

JDK源码那些事儿之LinkedBlockingQueue

2019-08-10
阅读 13 分钟
2.1k
今天继续讲解阻塞队列,涉及到了常用线程池的其中一个队列LinkedBlockingQueue,从类命名部分我们就可以看出其用意,队列中很多方法名是通用的,只是每个队列内部实现不同,毕竟实现的都是同一个接口BlockingQueue,可以自行查看接口源码,下面我们一起看下LinkedBlockingQueue实现的源码部分

JDK源码那些事儿之ArrayBlockingQueue

2019-07-28
阅读 31 分钟
1.4k
线程在JDK中是非常重要的一块内容,所有的应用服务都离不开线程的相关操作,对于大量线程的使用都是推荐使用线程池来进行操作和管理,JDK本身提供的线程池在服务中经常被使用到,以往经常使用Executors来创建,但是阿里规范中也指出了其存在的隐患,从源码来看,内部大量使用了队列相关的类,所以在深入线程部分之前,我...

JDK源码那些事儿之并发ConcurrentHashMap下篇

2019-07-06
阅读 22 分钟
1.8k
上一篇文章已经就ConcurrentHashMap进行了部分说明,介绍了其中涉及的常量和变量的含义,有些部分需要结合方法源码来理解,今天这篇文章就继续讲解并发ConcurrentHashMap

JDK源码那些事儿之并发ConcurrentHashMap上篇

2019-06-23
阅读 23 分钟
1.5k
前面已经说明了HashMap以及红黑树的一些基本知识,对JDK8的HashMap也有了一定的了解,本篇就开始看看并发包下的ConcurrentHashMap,说实话,还是比较复杂的,笔者在这里也不会过多深入,源码层次上了解一些主要流程即可,清楚多线程环境下整个Map的运作过程就算是很大进步了,更细的底层部分需要时间和精力来研究,暂不深入

JDK源码那些事儿之常用的ArrayList

2019-05-11
阅读 12 分钟
1.3k
前面已经讲解集合中的HashMap并且也对其中使用的红黑树结构做了对应的说明,这次就来看下简单一些的另一个集合类,也是日常经常使用到的ArrayList,整体来说,算是比较好理解的集合了,一起来看下

JDK源码那些事儿之HashMap.TreeNode

2019-05-03
阅读 24 分钟
1.6k
前面几篇文章已经讲解过HashMap内部实现以及红黑树的基础知识,今天这篇文章就讲解之前HashMap中未讲解的红黑树操作部分,如果没了解红黑树,请去阅读前面的两篇文章,能更好的理解本章所讲解的红黑树源码操作,全文默认读者已经了解红黑树的相关知识,接下来,就以HashMap.TreeNode来说明红黑树的源码操作。

JDK源码那些事儿之红黑树基础下篇

2019-04-13
阅读 3 分钟
1.5k
说到HashMap,就一定要说到红黑树,红黑树作为一种自平衡二叉查找树,是一种用途较广的数据结构,在jdk1.8中使用红黑树提升HashMap的性能,今天就来说一说红黑树,上一讲已经给出插入平衡的调整操作,这一讲就说说更为复杂的删除平衡操作。

JDK源码那些事儿之红黑树基础上篇

2019-04-05
阅读 5 分钟
1.7k
说到HashMap,就一定要说到红黑树,红黑树作为一种自平衡二叉查找树,是一种用途较广的数据结构,在jdk1.8中使用红黑树提升HashMap的性能,今天就来说一说红黑树。

JDK源码那些事儿之我眼中的HashMap

2019-03-08
阅读 18 分钟
1.4k
源码部分从HashMap说起是因为笔者看了很多遍这个类的源码部分,同时感觉网上很多都是粗略的介绍,有些可能还不正确,最后只能自己看源码来验证理解,写下这篇文章一方面是为了促使自己能深入,另一方面也是给一些新人一些指导,不求有功,但求无过。有错误的地方请在评论中指出,我会及时验证修改,谢谢。