- 博客(7)
- 收藏
- 关注
原创 ReentrantLock(Lock)锁的底层实现与源码解析
ReentrantLock(Lock)锁的底层实现与源码解析目录ReentrantLock(Lock)锁的底层实现与源码解析1.内置静态内部类及其对象:1.1代表公平锁的静态内部类1.2代表非公平锁的静态内部类2.ReentrantLock的构造方法3.lock加锁过程4.lock加锁阻塞5.释放锁6.Lock 和 Synchronized区别参考资料参考资料1.内置静态内部类及其对象:经过观察ReentrantLock把所有Lock接口的操作都委派到一个Sync类上,该类继承了AbstractQue
2021-10-08 20:47:34
267
原创 AQS(AbstractQueuedSynchronizer)抽象类源码解析
AQS(AbstractQueuedSynchronizer)抽象类源码解析目录AQS(AbstractQueuedSynchronizer)抽象类源码解析1.概述2.实现的父类和接口3.AQS的两个内部类3.1Node节点3.2条件对象ConditionObject4.AQS的内部变量参考资料:1.概述AQS(AbstractQueuedSynchronizer)即 队列同步器,是用来构建锁或者其他同步组件的基础框架,它使用了一个int成员变量表示同步状态,通过内置的FIFO队列来完成资源获取线程的
2021-10-08 17:39:39
143
原创 synchronized锁的底层实现原理、源码分析
synchronized锁和Lock锁的底层实现原理与区别目录synchronized锁和Lock锁的底层实现原理与区别一、synchronized锁1.synchronized的作用2.synchronized实现原理1.synchronized修饰代码块2.synchronized修饰方法3.synchronized可重入的原理3.synchronized锁优化1.优化需要的数据结构:对象头MarkWord2.偏向锁、轻量级锁、重量级锁之间的切换4.对象头的MarkWord和线程之间的关系5.监视器(
2021-10-08 15:57:14
315
原创 对象的实例化(对象创建的方式和对象的创建步骤)
JVM虚拟机中对象的实例化(对象创建的方式和步骤)下面从对象的创建方式和对象的创建步骤两个角度说起:1. 对象的创建方式2. 对象的创建步骤2.1判断对象对应的类是否加载、链接、初始化:虚拟机遇到一条new指令,首先去检查这个指令的参数能否在Metaspace的常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化。(即判断类元信息是否存在)。如果没有,那么在双亲委派模式下,使用当前类加载器以ClassLoader+包名+类名为Key进行查找对应的.class
2021-05-18 11:54:00
537
原创 静态常量池和运行时常量池的区别
静态常量池和运行时常量池的区别:静态常量池是针对每个被加载进入内存的class文件解析后,存放各个字面量值,符号引用的数据。简而言之,静态常量池属于某个类的字节码文件,属于单个类的自己的常量池。运行时常量区就是当前运行类加载所有相关类(如父类、实现类、一些系统类、输出流等)的字节码文件后,把他们所有的静态常量池的数据汇总到一起,存放在该进程的运行时常量池中,再加上该类运行期解析后才能够获得的方法或者字段引用,就组成了运行时常量池。...
2021-05-18 09:47:56
548
原创 java8基本类型流的getAsInt()方法
java8基本类型流的getAsInt()方法 为了避免不必要的拆箱和装箱,Java8引入了三个原始类型特化流接口:Intstream, LongStream和Doublestream,将流中的元素特化为int, long和double,避免暗含的装箱成本。并且,在这三个特化接口中,提供了常用的数值规约方法,可以方便地进行数值相关的操作,如min,max, sum等。如果需要将基本类型特化流再转换引用类型流,也有相应的方法支持。 其中,对于Intstream流的**getAsInt()**方法
2021-05-13 17:10:33
3525
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人