
jdk源码
文章平均质量分 78
小白读JDK源码
存量美团骑手
在追求优秀的路上了
展开
-
波吉学源码——独占锁ReentrantLock源码剖析
ReentrantLock是可重入的独占锁,同时只能有一个线程可以获取该锁,其他获取该锁的线程会被阻塞而放入该锁的AQS阻塞队列里面 ReentrantLock由AQS来实现,并且根据参数来决定其内部是公平锁还是非公平锁,默认是非公平锁 其中Sync直接继承自AQS,它的子类分别实现了公平锁和非公平锁 AQS的state状态值表示线程获取该锁的可重入次数,在默认情况下,state的值为0表示当前锁没有任何线程持有,当一个线程第一次获取该锁时会尝试使用CAS设置state值为1,如果CAS成功则当前线程获取原创 2022-01-27 15:22:04 · 506 阅读 · 9 评论 -
波吉学源码——AQS源码剖析
在了解AQS之前我们需要来认识一下这个工具类,因为该工具类是创建锁和其他同步类的基础 LockSupport 该工具类的主要作用是挂起和唤醒线程 LockSupport类与每个使用它的线程都会关联一个许可证,在默认情况下调用LockSupport类的方法的线程是不持有许可证的,LockSupport是使用Unsafe类实现的,下面介绍几个重要的函数 void park() public static void park() { UNSAFE.park(false, 0L); } 如果调用park方原创 2022-01-25 13:06:01 · 591 阅读 · 11 评论 -
波吉学源码——CopyOnWriteArrayList源码剖析
CopyOnWriteArrayList源码剖析 并发包中的并发List只有CopyOnWriteArrayList,CopyOnWriteArrayList是一个线程安全的ArrayList,对其进行的修改操作都是在底层的一个复制的数组(快照)上进行的,也就是使用了写时复制策略 在CopyOnWriteArrayList的类图中,每个CopyOnWriteArrayList对象里有一个array数组对对象用来存放具体元素,ReentrantLock独占锁对象用来保证同时每个线程对array修改。 构原创 2022-01-22 15:29:01 · 707 阅读 · 13 评论 -
ArrayList扩容机制JDK1.8
本题的所有的讲解都是基于JDK8 这道题考察了ArrayList的构造器和对扩容机制的了解,本篇博客基于此出发讲解ArrayList的扩容机制 想要做出这道题必须了解ArrayList的构造函数,ArrayList的构造函数总共有三个: ArrayList()构造一个空的数组。JDK7中构造一个初始容量为10的空列表但是JDK8中只是构造一个空的数组 ArrayList(Collection<? extends E> c)构造一个包含指定 collection 的元素的数组,这些元素是按.原创 2021-12-10 19:34:12 · 1013 阅读 · 47 评论