![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java学习笔记
文章平均质量分 92
Java学习笔记
一只小危
这个作者很懒,什么都没留下…
展开
-
多线程-锁升级过程
一、概述Java SE 1.6 为了减少获得锁和释放锁带来的性能消耗,引入了“偏向锁”和“轻量级锁”。因此锁一共有4种状态,从低到高依次是:无锁、偏向锁、轻量级锁、重量级锁二、概念下面依次介绍四种锁:1、偏向锁Hotspot 的作者经过以往的研究发现大多数情况下锁不仅不存在多线程竞争,而且总是由同一线程多次获得,为了让线程获得锁的代价更低而引入了偏向锁。当一个线程访问同步块并获取锁时,会在对象头和栈帧中的锁记录里存储锁偏向的线程 ID,以后该线程在进入和退出同步块时不需要花费CAS操作来加锁和解锁原创 2021-09-27 14:36:07 · 611 阅读 · 0 评论 -
Java Class类文件的结构
基础概念任何一个 Class 文件都对应着唯一的一个类或接口的信息Class 文件是一组以字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在文件之中,中间没有添加任何分隔符。这使得整个 Class 文件中存储的内容几乎全部是 程序运行的必要数据Class 文件格式采用一种类似于 C 语言结构体的伪结构来存储数据,这种伪结构只有“无符号数” 和 “表”两种数据类型 无符号数 无符号数属于基本的数据类型,以 u1,u2,u4,u8 来分别代表 1 个字节、2 个字节、4 个字节、8.原创 2021-07-04 15:06:20 · 1127 阅读 · 0 评论 -
HashSet 原理结构
HashSet JDK1.8版本之前: 哈希表 = 数组+链表 JDK1.8版本之后: 哈希表 = 数组+链表+红黑树(提高查询速度)原理:首先存储数据到集合中,先计算元素的哈希值;将元素进行分组,相同hash值的元素为一组,链表是把相同的Hash值的元素连在了一起;如果链表的长度超过了8位,那么就会把链表转化为红黑树。红黑树:...原创 2020-12-06 23:00:50 · 1989 阅读 · 2 评论