![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
源码
申老皮
这个作者很懒,什么都没留下…
展开
-
RentrantLock源码剖析
RentrantLock源码剖析ReentrantLock是一个独占式的锁,支持重入.里面实现了公平锁与非公平锁;其中ReentrantLock支持可公平锁与非公平锁,最顶层的父类是AQS.获取锁阻塞释放全部都是通过AQS来实现.接下来详细说明这些是怎么实现的.Sync继承自AQSabstract void lock();抽象方法,让子类也就是两个公平和非公平类来实现.boolea...原创 2019-05-18 22:21:38 · 389 阅读 · 0 评论 -
TimSort源码分析
TimSorttimsort是jdk自带的一种特别高效的排序算法,大致思想使用的是归并排序,但是内部细节做了许多的优化.在timsort中,主要是为待排序数组分为很多个run块,通过讲这些run块进行归并排序.最后实现总体排序.每个run块的大小为16-32大小.优化地方:当待排序数组长度小于32就使用二分排序算法分为多个run块,在通过把run块的起始位置和长度压入栈中,在进行合并....原创 2019-05-19 20:17:45 · 390 阅读 · 0 评论 -
ThreadLocal实现原理
ThreadLocal简介ThreadLocal是java中将非线程安全变为线程安全的一个神器.通过为每一个线程保存一个线程本地变量来保证数据的安全性,通过set()和get()方法来使用. 因为每个线程都拥有变量的副本.不和其他线程变量交互,所以不会出现线程安全问题.所以这里有一个点就是ThreadLocal应用的场景应该是变量的访问是没有依赖关系的,每个线程只和自己的数据副本打交道.属性...原创 2019-05-20 22:17:33 · 697 阅读 · 0 评论 -
HashMap源码解析
HashMapjava.util包下面的工具类,键值对存储数据.通过对键值计算hash值,来存储到对应的位置.jdk1.8中底层使用数组加链表实现.键值对通过一个内部类的Node节点来表示.采用链地址法解决hash冲突,如果一条链上的节点超过给定阈值会变为红黑树.默认为8.在hashmap中是可以存储空key和value的.如果为空,则位置为0.声明hashmap继承了AbstractM...原创 2019-05-21 20:36:45 · 126 阅读 · 0 评论 -
AQS源码解析
AbstractQueueSynchronizer定义了一套多线程访问共享资源的同步框架首先维护了一个volatile state状态量 和 一个阻塞队列,是FIFO队列,队列使用链表实现.state的访问方式有三种getstate()setState()compareAndSetState()AQS 定义了两种资源共享状态,一种是独占(Exclusive 如ReentrantLoc...原创 2019-05-17 22:22:52 · 174 阅读 · 0 评论 -
JavaNio之Buffer
JavaNio之Buffer简介BufferBuffer属性以及相关操作.初始化:读写ByteBufferreset()方法总结简介Java NIO类在jdk中有了源生支持,实现了一套自己的NIO框架,当然了底层依然是系统调用.但是在NIO中必不可少的就是缓冲区,随后的Channel和Selector随后在介绍.Buffer这就是Buffer的大致继承体系,很多都没有罗列出来,因为主要讲...原创 2019-05-28 19:14:47 · 2597 阅读 · 0 评论