JDK源码解析
本专栏是为一些专门应对JDK中一些源码的解析
寒山道杳
合抱之木,生於毫末;九層之台,起於累土;千里之行,始於足下。
展开
-
ThreadLocal的使用与源码解析
前言对于ThreadLocal,那是众所周知的,因为在项目中它是常常被使用的,先简单说下平常使用的场景:设置每个线程所需要的独享数据 设置内存中需要的全局变量(譬如拦截其中的用户信息)在ThreadLocal类的注释中,作者给的便是这样的定义,如图:这段注释大体的意思是说(笔者英语极差):ThreadLocal这个类提供了thread-local变量,这些变量与普通变量不同,每个线程可以根据get或者set方法来操作自己独立初始化的变量副本。ThreadLocal 实例通常是类中的 pr原创 2020-11-22 23:04:12 · 200 阅读 · 0 评论 -
Java并发编程之ReentrantLock源码解析
一、关于ReetrantLock在上篇文章Java并发编程之AQS中,比较详细的说了一下关于AQS的设计和AQS的代码相关原理。在上篇文章中也说了,AQS是J.U.C的核心,是用来构建锁或其他同步组件的基础框架,这其中就包括了ReentrantLock。由于前面已经详细的说了AQS的原理,在本篇文章中,对于涉及到AQS相关的东西,便会一带而过。ReentrantLock和synchro...原创 2019-04-15 15:20:58 · 388 阅读 · 0 评论 -
Java并发编程之AQS
一、关于AQS队列同步器 AbstractQueuedSynchronizer 简称AQS,是用来构建锁或其他同步组件的基础框架(ReentrantLock、ReentrantReadWriteLock、Condition、LockSupport等等),它使用了一个int成员变量表示同步的状态,通过内置的FIFO队列来完成资源获取线程的工作,并发包作者(Doug Lea)期望它能够成为实现大部...原创 2019-04-12 10:27:49 · 561 阅读 · 0 评论 -
Java并发编程之synchronized底层实现原理
一、为什么出现synchronized对于程序员而言,不管是在平常的工作中还是面试中,都会经常用到或者被问到synchronized。在多线程并发编程中,synchronized早已是元老级的角色了,很多人都称其为重量级锁,但是随着Java SE 1.6对其进行各种优化之后,便显得不再是那么的重了。也正是因为多线程并发的出现,便产生了线程安全这样的问题,对于线程安全的主要原因如下:...原创 2019-04-09 19:24:26 · 4889 阅读 · 0 评论 -
JDK集合源码解析——ArrayList
导语首先说下为什么要写集合类的博文,毕竟这类的文章网上也是数不胜数,可是并不能因为这个就成了自己不写的理由,写博文其实主要是为了锻炼自己思考问题的思路,很多时候一篇文章写的好坏与否,主要就看写作者的思路如何。当你的思路很清晰的时候,同时也说明了你对它的熟悉度如何。虽然集合源码的解析又很多人写过,看上去也不是很复杂,可是如果你去细看的话,其实还是可以看出很多东西的。笔者之所以要写,更多的是要...原创 2019-09-05 21:52:00 · 183 阅读 · 0 评论 -
JDK集合源码解析——LinkedList
前言上一篇文章对ArrayList的源码进行了一个简单的解析,那么本篇将对ArrayList的“兄弟”集合类LinkedList进行解析,相对于ArrayList而言,LinkedList的源码相对复杂一点点,但还没难道难以阅读的地步,稍微用点心还是可以滴。那么说到LinkedList,在面试的时候都会问他的数据结构是什么,时间复杂度是什么等等。有时候一些问题是成链式结构的,譬如Linke...原创 2019-09-06 20:44:06 · 226 阅读 · 0 评论