JDK源码
文章平均质量分 80
浮生若梦flw
这个作者很懒,什么都没留下…
展开
-
HashMap的源码关键解读
HashMap的源码关键解读一:整体结构hashMap的源码有太多文章解读了,这里只是记录关键点。对很多不重要的东西略过了。java8以后对于hashMap的整体做了优化,是基于一个数组+链表+红黑树的实现。结构图如下:二:key索引映射当我们往hashMap里面put数据的时候,会先获key在数组中的位置。但是hashMap为了让我们的数据在数组中更加分散,在取模前进行了散列hash。 static final int hash(Object key) { int h;原创 2022-03-26 21:57:35 · 958 阅读 · 2 评论 -
从源码看公平锁和非公平锁得区别
从源码看公平锁和非公平锁得区别一:理论解释公平锁:ReentrantLock通过构造器参数设置为true就是公平锁。非公平锁:synchronized 关键字,ReentrantLock默认就是非公平锁。公平锁:多个线程按照申请锁的顺序去获得锁,线程会直接进入队列去排队,永远都是队列的第一位才能得到锁。优点:所有的线程都能得到资源,不会饿死在队列中。缺点:吞吐量会下降很多,队列里面除了第一个线程,其他的线程都会阻塞,cpu唤醒阻塞线程的开销会很大。非公平锁:多个线程去获取锁的时候,会直接去原创 2021-05-19 23:46:24 · 239 阅读 · 2 评论 -
Synchronized关键字原理,和锁的膨胀过程
Synchronized关键字原理,和锁的膨胀过程一:Synchronized关键字介绍synchronized是Java中的关键字,用于线程的同步。可以用在三个地方。 1:同步实例方法,锁是当前实例对象; 2:同步类方法,锁是当前类对象; 3:同步代码块,锁是括号里面的对象;二:Synchronized的原理解析1:synchronized是JVM内置锁,通过内部对象Monitor(监视器锁)实现,基于进入与退出Monitor对象实现方法与代码块同步,监视器锁的实现依赖底层操作系统的M原创 2021-05-15 23:36:46 · 153 阅读 · 0 评论 -
关于volatile关键字的解析
关于volatile关键字的解析什么是volatile volatile是Java虚拟机提供的轻量级的同步机制三大特性不保证原子性禁止指令重排保证可见性不保证原子性对于volatile不保证原子性,我们可以通过一段代码来验证package javase;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurr原创 2021-05-15 13:52:13 · 229 阅读 · 0 评论 -
【JDK源码】AQS源码详细解读
AQS源码详细解读什么是AQASAQS:AbstractQueuedSynchronizer ,它是一个抽象的同步队列器,这个类位于java.util.concurrent.locks包下面,是用来构建锁或者其它同步器组件的重量级基础框架及整个JUC体系的基石,通过内置的FIFO队列来完成资源获取线程的排队工作,并通过一个int类型变量麦示持有锁的状态。主要是通过CLH队列实现对线程的调度。CLH: Craig、Landin and Hagersten队列,是一个单向链表,AQS中的队列是CL原创 2021-04-29 23:37:46 · 387 阅读 · 0 评论