
源码系列
渐入佳境o
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
AQS深入学习
AQS是指JUC包下的AbstractQueuedSynchronizer的简称,它是Java锁以及一些同步器(JUC包)实现的核心,大部分JUC下的类内部的提供了一个实现了AQS的子类来提供辅助。 AQS还继承了一个AbstractOwnableSynchronizer类,它是AQS的实现的重要基础。 AQS实现主要是依赖一个先进先出(FIFO)的等待队列和一个volatile标记的int型state状态标记。 AQS的FIFO等待队列,是基于双向链表实现的,是典型的CLH队列改造而来 首先来看一下AQS原创 2020-10-26 11:26:01 · 316 阅读 · 1 评论 -
线程池的使用和原理分析
首先看一下类图 线程池的执行流程 线程池整个流程: 创建线程池,开始等待请求 调用execute()方法添加一个请求任务时,线程池会判断 如果正在运行的线程数雄安与核心线程数,那么会创建线程运行这个任务 如果正在运行的线程数大于或者等于核心线程数,则将这个任务放入队列中 如果这个队列满了,而且线程数论小于最大线程数,则创建非核心线程执行任务 如果队列满了,而且正在运行的线程数也大于或者等...原创 2020-03-20 20:19:51 · 210 阅读 · 0 评论 -
FutureTask源码了解
FutureTask分析 基于jdk11 但是和1.8有一些小差别 先看一下简单使用 //静态内部类创建单例线程池 -利用了类机制 static class SinglePool{ public static ThreadPoolExecutor executor = new ThreadPoolExecutor(4, 50, 2000, TimeUnit.SECONDS, ...原创 2020-03-18 14:56:25 · 165 阅读 · 0 评论 -
HashMap 源码初次剖析
基于jdk11 首先,我们了解一下HashMap的底层结构历史,在JDK1.8之前采用的是数组+链表的数据结构来存储数据,是不是觉得很熟悉,没错这玩意在1.8之前的结构就和HashTable一样都是采用数组+链表,同样也是通过链地址法(这里简称拉链法)来解决冲突,但是HashMap和HashTable的区别是一个是线程安全的,一个是非线程安全的。然后知道jdk1.8出来以后,HashMap做性能优...原创 2020-03-15 03:37:52 · 367 阅读 · 0 评论 -
深入HashTable 源码分析
### HashTable 分析是基于jdk11,但与jdk1.8相差并不大 HashTable是一个安全散列集,它是以Key-Value对的形式存储,和HasMap一样它同样也存在哈希冲突的情况,因此HashTable采用了数组+单链表的方式来减少哈希冲突(简称拉链法),此外,它的所有涉及到并发的方法的被synchroniced关键字修饰(即在方法加了同步锁),所以在并发情况下是线程安全的,但...原创 2020-03-13 17:00:01 · 234 阅读 · 0 评论 -
CopyOnWriteArrayList 源码剖析
CopyOnWriteArrayList&CopyOnWriteArraySet 由于ArrayList操作并发下非线程安全,因为当一个线程在读,另外一个线程在写这样会造成线程不安全,因此引出了CopyOnWriteArrayList 也叫写时复制集合,而为什么要把CopyOnWriteArraySet也在这里说的主要是这个Set内部大部分是基于CopyOnWriteArrayList实现...原创 2020-03-13 01:26:44 · 551 阅读 · 0 评论 -
深入LinkedList 源码分析-jdk1.8
LinkedList 在分析源码之前先分析一下LinkedList的数据结构, 首先进入源码看介绍或者看LinkedList的全局变量都可以看到LinkedList是基于双链表实现的,数据存储是存储在节点Node中的下面是数据结构类型的源码: public class LinkedList<E> extends AbstractSequentialList<E> ...原创 2020-03-12 16:35:32 · 199 阅读 · 0 评论 -
Vectory 源码分析
Vector vector是java很早就出来的一个继承list的子类,基本属于淘汰级别,它与ArrayList相比实现级别相同,但Vector是线程安全的,基本上所有的方法都添加了Synchronized关键字来实现方法级别的同步锁,虽然控制了线程安全但性能也受到了大大的影响 先看一下Vector的全局变量、构造方法以及继承那些和实现那些接口 //可以看到Vectors和ArrayList一...原创 2020-03-12 02:37:59 · 657 阅读 · 0 评论 -
Collections中的 SynchronizedList 源码阅读
SynchronizedList SynchronizedList是一个基于同步锁实现的List,是Collections工具类里面的一个静态类,与ArrayList相比,它是线程安全的,与Vector相比他性能又要好一些,因为Vector实现同步锁是基于方法级别,而SynchronizedList实现同步锁是在代码级别范围更小,性能更高效。(与其他使用轻量级锁的并发容器相比效率还是比较低,虽然j...原创 2020-03-12 01:57:59 · 396 阅读 · 0 评论 -
ArrayList源码分析 基于jdk1.8
ArrayList 由于ArrayList的数据结构是基于数组的形式所以在查找、修改和尾部添加方面很快,但删除和指定位置添加速度比较慢 首先看ArraysList的全局变量如下: public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, ...原创 2020-03-11 22:42:10 · 264 阅读 · 0 评论