——【JDK源码】
这个人很懒哦
菜鸟编程98K
毕业于社会大学,逆天而行。
展开
-
FileChannel阅读笔记
FileChannel阅读笔记文章目录FileChannel阅读笔记一、简介二、继承关系图三、存储结构四、源码分析内部类属性构造主要方法1、write方法2、read方法3、position方法4、truncate方法5、transferTo方法6、tranferForm方法7、lock方法8、tryLock方法9、force方法10、map方法11、open12、isOpen补充1、FileL...原创 2020-02-17 08:51:11 · 235 阅读 · 0 评论 -
Channel接口的层次结构解析
Channel阅读笔记文章目录Channel阅读笔记镇楼:Channel接口的层次结构镇楼:Channel接口解析一、AsynchronousChannel接口1、查看jdkdoc文档2、查看类图关系3、抽象方法二、AsynchronousByteChannel接口1、查看jdkdoc文档2、查看类图关系3、抽象方法三、ReadableByteChannel接口1、查看jdkdoc文档2、查看类...原创 2020-01-23 18:02:35 · 28969 阅读 · 0 评论 -
CharBuffer源码
CharBuffer阅读笔记文章目录CharBuffer阅读笔记一、简介二、继承关系图三、存储结构四、源码分析内部类属性构造主要方法1、创建缓存区(静态方法)2、get/read相关方法3、put相关方法4、append相关方法5、其他方法补充五、总结一、简介它是一个抽象类,具体实现都是在子类,但是可以通过自身的静态方法实例化不同的构造,Buffer的第一级子类采用了《模板模式》的设计模式...原创 2020-01-22 22:32:32 · 445 阅读 · 0 评论 -
ByteBuffer源码解析
ByteBuffer阅读笔记问题一、简介是一个抽象类,但是可以根据类提供的静态方法,来生成堆内或堆外的实例对象,Buffer的第一级子类采用了《模板模式》的设计模式二、继承关系图相关实现我们通过IDEA的插件可以看出ByteBuffer相关的继承关系及实现类,我们下面简单描述一下HeapByteBuffer:继承与ByteBuffer,数据存储在 JVM中间缓存区Hea...原创 2020-01-22 21:40:26 · 351 阅读 · 0 评论 -
Buffer缓存区
Buffers阅读笔记文章目录Buffers阅读笔记一、简介二、继承关系图三、存储结构四、源码分析内部类属性构造主要方法1、读取4大属性2、单个操作4大属性3、缓冲区4属性处理4、判断剩余量和底层数组5、获取剩余容量和底层数组6、其他package-private可用方法补充五、总结一、简介这是一个缓存区的抽象类,真正的数组存储在ByteBuffer、ShortBuffer、IntBuffe...原创 2020-01-22 16:18:40 · 215 阅读 · 0 评论 -
Executors工具类
Executors工具类阅读笔记文章目录Executors工具类阅读笔记一、简介二、源码分析主要方法1、创建线程池相关函数-总览1.1、创建线程池相关函数-解析2、创建线程工厂-总览2.1、创建线程工厂-详解3、转化任意线程为Callable线程-总览3.1、转化任意线程为Callable线程-详解三、总结一、简介用于创建线程池、包装成Callable线程、创建默认线程工厂的工具类二、源码...原创 2020-01-16 17:55:38 · 378 阅读 · 0 评论 -
ScheduledThreadPoolExecutor阅读理解
ScheduledThreadPoolExecutor阅读笔记问题一、简介指定某个时刻执行任务,是通过延时队列的特性来解决的重复执行,是通过在任务执行后再次把任务加入到队列来解决的二、继承关系图三、存储结构自己内部封装了一个ScheduledFutureTask内部类,用于封装FutureTask的自己内部封装了一个DelayedWorkQueue内部类,延迟阻塞队列,用于...原创 2020-01-16 15:36:29 · 332 阅读 · 0 评论 -
FutureTask未来任务类
FutureTask阅读笔记文章目录FutureTask阅读笔记一、简介二、继承关系图三、存储结构四、源码分析内部类属性构造主要方法1、run()相关方法2、get()相关方法3、cancel(boolean t)方法使用Demo一、简介通过把普通任务封装成FutureTask来获取执行结果,同时还可以感知任务执行的异常,甚至还可以取消任务 采用异常调用思想,Netty、Dubbo中常...原创 2020-01-14 17:37:40 · 561 阅读 · 0 评论 -
ThreadPoolExecutor详解
ThreadPoolExecutor阅读笔记文章目录ThreadPoolExecutor阅读笔记一、简介二、继承关系图三、存储结构四、源码分析内部类Worker属性构造方法主要方法1、线程池生命周期的方法2、线程的执行方法补充五、总结ThreadPoolExecutor阅读笔记一、简介二、继承关系图三、存储结构四、源码分析内部类Worker属性构造方法主要方法1、线程池生命周期的方法2、线程的执...原创 2020-01-14 11:59:51 · 197 阅读 · 0 评论 -
ThreadLocal
TreadLocal阅读笔记文章目录TreadLocal阅读笔记二、类结构三、存储结构四、源码分析内部类ThreadLocalMap1、ThreadLocalMap内部类-属性2、ThreadLocalMap内部类-子类3、ThreadLocalMap内部类-构造器4、ThreadLocalMap内部类-主要方法属性构造主要方法五、总结二、类结构ThreadLocal中嵌套内部类Thre...原创 2020-01-13 10:08:41 · 349 阅读 · 0 评论 -
Thread
Thread阅读笔记问题一、简介它是Java.lang包的一个类,调用系统内核来执行线程二、继承关系图三、源码分析内部类枚举State类public enum State { /** * 新建状态:线程刚创建,还未执行start方法 */ NEW, /** * 可运行状态:已经就绪可运行的状态,处于此状态的线程是正在JV...原创 2020-01-13 10:06:35 · 109 阅读 · 0 评论 -
多线程理论、创建方式、线程池体系结构
多线程理论知识文章目录多线程理论知识一、线程模型1、多对一模型2、一对一模型3、多对多模型总结:二、线程创建的8种方式1、继承Thread类2、实现Runnable接口3、匿名内部类4、实现Callabe接口5、定时器(java.util.Timer)6、线程池7、并行计算(Java8 + )8、@EnabeAsync+@Async注解三、Java线程池-体系结构1、Executor:2、Exe...原创 2020-01-13 10:04:30 · 507 阅读 · 0 评论 -
DelayQueue
DelayQueue阅读笔记文章目录DelayQueue阅读笔记一、简介二、继承关系图三、存储结构四、源码分析属性构造主要方法入队操作出队操作获取队列顶元素删除元素补充使用demo五、总结一、简介 元素最大容量没有限制,内部采用PriorityQueue优先队列存储元素,添加和获取元素都进行了ReentrantLock加锁,同时集合中没有元素时进行等待采用的Condition条件锁。所有...原创 2020-01-09 16:52:57 · 731 阅读 · 0 评论 -
ConcurrentLinkedQueue
ConcurrentLinkedQueue阅读笔记文章目录ConcurrentLinkedQueue阅读笔记一、简介二、继承关系图 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200108164539187.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,tex...原创 2020-01-08 16:47:15 · 149 阅读 · 0 评论 -
ArrayBlockingQueue
ArrayBlockingQueue阅读笔记一、简介 一种阻塞的队列,添加和移除元素都会进行ReentrantLock加锁,其中的take和put方法利用了condition条件锁来让添加和获取可以让线程等待有元素或有空位置再取或加二、继承关系图三、存储结构不需要扩容。初始化指定了容量,并循环利用数组,加上添加和取出元素都加锁四、源码分析内部类属性/** 用于存储元素的...原创 2020-01-08 11:46:43 · 494 阅读 · 0 评论 -
ConcuurentHashMap
ConcuurentHashMap阅读笔记文章目录ConcuurentHashMap阅读笔记问题一、简介二、继承关系图三、存储结构四、源码分析内部类属性构造主要方法1、put2、initTable3、addCount4、helpTransfer5、transfer补充五、总结问题1、ConcurrentHashMap 与 HashMap的数据结构是否一样?是的,一样的,只是在node上增...原创 2020-01-07 17:56:11 · 489 阅读 · 0 评论 -
CopyOnWriteArrayList
CopyOnWriteArrayList阅读笔记文章目录CopyOnWriteArrayList阅读笔记一、简介二、继承关系图三、存储结构四、源码分析内部类属性构造主要方法补充五、总结一、简介 CopyOnWriteArrayList是ArrayList的线程安全版本,内部也是通过数组实现,每次对数组的修改都完全拷贝一份新的数组来修改,修改完了再替换掉老数组,这样保证了只阻塞写操作,不阻...原创 2020-01-06 17:03:29 · 369 阅读 · 0 评论 -
Semaphore
Semaphore阅读笔记文章目录Semaphore阅读笔记一、简介二、继承关系图三、存储结构四、源码分析内部类SyncNonFairSyncFairSync属性构造主要方法补充限流实现代码五、总结一、简介Semaphore,信号量,它保存了一系列的许可(permits),每次调用acquire()都讲消耗一个许可,每次调用release()都讲归还一个许可。场景:通常用于限制同一时...原创 2020-01-03 10:21:22 · 458 阅读 · 0 评论 -
ReentrantLock
ReentrantLock阅读笔记文章目录ReentrantLock阅读笔记问题一、简介二、继承关系图三、存储结构四、源码分析内部类属性构造主要方法**1、加锁源码**(公平模式),第二次 后面的获取锁都是先判断了是否是队列中的第一个节点,如果是才会去尝试获取锁,**2、加锁源码(非公平模式)**3、lockInterruptibly()4、tryLock()5、tryLock(long tim...原创 2020-01-01 21:12:29 · 134 阅读 · 0 评论 -
手写Lock
建议学习前,做好如下准备1、阅读Unsafe源码2、CAS原理代码import sun.misc.Unsafe;import java.lang.reflect.Field;/** * @Author 李雷(KyLin) * @Desc * @Date 2019/12/31 */public class Sync { static final Node EMPT...原创 2019-12-31 18:32:11 · 235 阅读 · 0 评论 -
同步器源码阅读准备知识:JMM、volatile、synchronized、分布式锁
第三周概念文章目录第三周概念一、Java内存模型(JMM)1、概述2、内存中的8种交互操作(1)、lock(2)、unlock(3)、read(4)、load(5)、use(6)、assign(7)、store(8)、write3、执行交互操作的8大基本规则4、原子性、可见性、有序性(1)、原子性(2)、可见性(3)、有序性5、现行发生原则(Happens-Before)7、JMM总结二、vol...原创 2019-12-31 15:12:27 · 808 阅读 · 0 评论 -
LongAdder
LongAdder阅读笔记问题1、为什么JDK8需要增加LongAdder?解决AtomicInteger在并发增加的情况下的性能下降问题2、AtomicInteger的实现原理?通过cells数组和base来存储数据不同的线程会hash到不同的cells或base3、LongAdder和AtomicInteger的对比?单线程选AtomicInteger(不过都单线程了...原创 2019-12-27 10:23:32 · 244 阅读 · 0 评论 -
Striped64
Striped64阅读笔记一、简介Striped64是在java8中添加用来支持累加器的并发组件,它可以在并发环境下使用来做某种计数,Striped64的设计思路是在竞争激烈的时候尽量分散竞争,在实现上,Striped64维护了一个base Count和一个Cell数组,计数线程会首先试图更新base变量,如果成功则退出计数,否则会认为当前竞争是很激烈的,那么就会通过Cell数组来分散计数,...原创 2019-12-26 15:56:07 · 358 阅读 · 0 评论 -
AtomicStampedReference
AtomicStampedReference阅读笔记文章目录AtomicStampedReference阅读笔记问题一、简介二、继承关系图三、存储结构四、源码分析内部类属性构造主要方法:compareAndSet()方法使用方式五、总结六、[参考](https://mp.weixin.qq.com/s?__biz=Mzg2ODA0ODM0Nw==&mid=2247483882&i...原创 2019-12-25 16:03:43 · 518 阅读 · 0 评论 -
AtomicInteger
AtomicInteger阅读笔记问题1、什么是原子操作?2、什么是可见性?3、AtomicInteger通过什么实现原子操作? A:通过Unsafe原子工具类来实现原子操作4、AtomicInteger有什么缺点? A:有ABA问题,且自旋消耗CPU性能一、简介优点:CAS乐观锁,性能较强,利用CPU自身的特性保证原子性,即CPU的指令集封装CompareAndSwap...原创 2019-12-25 14:53:26 · 410 阅读 · 0 评论 -
Unsafe
Unsafe阅读笔记:文章目录Unsafe阅读笔记:一、基本描述二、详细介绍一、基本描述final类,单例 且 不可集成。实例化类:Unsafe类使用了单例模式,需要通过一个静态方法getUnsafe()来获取。但Unsafe类做了限制,如果是普通的调用的话,它会抛出一个SecurityException异常;只有由主类加载器加载的类才能调用这个方法//Java反射实例化Un...原创 2019-12-25 09:35:17 · 147 阅读 · 0 评论 -
Stack
Stack问题一、简介优点:Stack是线程安全的,底层是数组缺点:二、继承关系图是浅拷贝Stack实现了继承Vector,具有线程安全,除了push方法,其他都加了synchornized实现了RandomAccess接口,for 循环速度比迭代速度快三、存储结构四、源码分析内部类无属性无构造默认构造主要方法//Stack类中唯一二个没有加synchorni...原创 2019-12-11 11:58:39 · 179 阅读 · 0 评论 -
HashMap
名字问题一、简介优点:缺点:二、继承关系图是浅拷贝HashMap实现了Cloneable,可以被克隆,是浅拷贝。HashMap实现了Serializable,可以被序列化。HashMap继承自AbstractMap,实现了Map接口,具有Map的所有功能。三、存储结构四、源码分析/* 介绍HashMap是一个散列表。他存储的内容是键值对(key-value)映射Has...原创 2019-12-11 11:26:24 · 285 阅读 · 0 评论 -
LinkedList
名字问题一、简介优点:缺点:遍历效率(快-慢): Iterator迭代 > for循环二、继承关系图通过继承体系,我们可以看到LinkedList不仅实现了List接口,还实现了Queue和Deque接口,所以它既能作为List使用,也能作为双端队列使用,当然也可以作为栈使用三、存储结构链路型数据结构四、源码分析内部类private static class N...原创 2019-12-11 11:17:38 · 121 阅读 · 0 评论 -
ArrayList
ArrayList一、简介说明: 1、是一种线性数据结构,它的底层是用数组实现的,相当于动态数组。与Java中的数组相比,它的容量能动态增长。优点: 1、根据下标遍历元素效率较高。 2、根据下标访问元素效率较高。 3、在数组的基础上封装了对元素操作的方法。 4、可以自动扩容。缺点: 1、插入和删除的效率比较低。 2、根据内容查找元素的效率较低。扩容规则: ...原创 2019-12-11 10:51:15 · 211 阅读 · 0 评论