自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 收藏
  • 关注

原创 Java类的延迟初始化

双重检验锁: public class SafeDoubleCheckedLocking { private volatile static Instance instance ; public static Instance getInstance(){ if(instance == null){ // synchronized (SafeDoubl

2021-05-07 16:16:11 209

原创 volatile的实现

volatile有两个作用,一个是保证变量在各线程之间的可见性,另一个是禁止指令重排。 可见性: 本质上就是线程之间通过主内存进行通信的问题,假如说有两个线程A和B,线程A写这个volatile变量,线程B读这个变量,在A写完以后,JMM把该线程的本地内存变量刷新到主内存里面,B在读的时候通过总线嗅探机制发现自己的本地内存变量已经过期,B就从主内存读取共享变量。为什么说是这是线程通信问题,就是A在写完这个volatile变量以后,实质上是A向接下来将要读这个变量的线程发出了其对该变量所作修改的信息,而B呢实

2021-04-27 10:14:51 119

原创 类加载的三个阶段

加载阶段: 通过类加载器,把class文件或者外部jar包定义为二进制文件加载进运行时数据区中,并且把类的元数据放在方法区(类的方法代码,变量名,方法名,访问权限,返回值等等),然后在堆中生成一个java.lang.class对象作为方法区数据的外部接口。 连接阶段: (1)验证: 确保class文件的字节流符合虚拟机的要求,四个检验动作:文件格式验证,元数据验证,字节码验证,符号引用验证。 (2)准备: 为类中static和final定义的变量在方法区分配内存并且设置初始值(0或者null)。 (3)解析

2021-03-25 09:09:50 161 2

原创 synchronize的实现原理和锁升级

synchronize存在着无锁、偏向锁、轻量级锁和重量级锁四种状态,会随着竞争的激烈逐渐升级。 偏向锁: 顾名思义,就是偏向第一个获得该对象的锁的线程,当线程请求到锁对象后,将锁对象的状态标志位改为01,即偏向模式。然后使用CAS操作将线程的ID记录在锁对象的Mark Word中。以后该线程可以直接进入同步块,进去以后标志计数加一。但是,一旦有第二条线程需要竞争锁,那么偏向模式立即结束,进入轻量级锁的状态。 轻量级锁: 升级为轻量级锁以后,线程进入同步块的时候,就会在线程的栈帧创建一个Lock Recor

2021-03-25 09:07:57 181 1

原创 Reentranlock的原理

Reentranlock的核心是AQS,分别有两个最终内部类NonfairSync和FairSync,都继承于AQS。 先来说说非公平锁吧,aqs的内部含有四个变量,分别是state、exclusiveOwnerThread、tail和head,线程在执行lock的时候,首先会尝试通过cas的方式去置state的值为1和把自己的线程ID给ownerThread,如果设置成功,就表明获得锁成功。如果失败,就表示之前的时候state的值已经大于等于1了,即已经被别的线程占用,这时候就会调用acquire()方法

2021-03-25 09:06:40 255

原创 ArrayList的实现原理

Arraylist内部有着几个变量,object类型的空数组elementdata,一个int类型值为10的default_capacity,然后还有两个空数组分别是empty_elementdata和defaultCapacity_empty_elementdata以及一个记录数组大小的size。 首先从构造方法说起,它有三种构造方法,第一个是默认构造方法,就是直接把defaultCapacity_empty_elementdata这个空数组赋值给elementdata。 第二种是自定义容量的构造方法,你

2021-03-25 09:05:16 112 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除