![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java八股
java八股总结
积极向上的zzz
这个作者很懒,什么都没留下…
展开
-
synchronized锁升级过程
获取锁,但没有线程对象上并发获取锁,偏向锁升级为轻量级锁,线程采用CAS自旋方式获取锁,避免阻塞线程造成cpu在用户态和核心态来回切换造成的开销。jdk1.6之前使用synchronized使用重量级锁。jdk1.6之后为了保证线程安全的基础上提高效率,采用偏向锁->轻量级锁->重量级锁。:会在锁对象的对象头上记录当前获取该锁的线程id,该线程下次获取该锁就可以直接获取。的获取锁,轻量级锁升级为重量级锁,避免无用的自旋消耗cpu。:当2个及以上的线程。原创 2024-07-08 12:15:13 · 141 阅读 · 0 评论 -
ThreadLocal的原理
ThreadLocalMap 中使用的 key 为 ThreadLocal 的弱引用,而 value 是强引用。,在垃圾回收的时候,key 会被清理掉,而 value 不会被清理掉。假如我们不做任何措施的话,value 永远无法被 GC 回收,这个时候就可能会产生内存泄露。2ThreadLocal底层是通过ThreadLocalMap实现的,每个Thread对象中存在一个ThreadLocalMap,Map的。当一个共享变量是共享的,但是需要每个线程互不影响,相互隔离,就可以使用ThreadLocal。原创 2024-06-22 20:34:53 · 485 阅读 · 0 评论 -
自动装箱和自动拆箱
在 Java 5 中,在 Integer 的操作上引入了一个新功能来节省内存和提高性能。整型对象通过使用相同的对象引用实现了。Integer i = 10 等价于 Integer i = Integer.valueOf(10)int n = i 等价于 int n = i.intValue();装箱:将基本类型用它们对应的引用类型包装起来;拆箱:将包装类型转换为基本数据类型;原创 2024-06-22 13:52:58 · 205 阅读 · 0 评论 -
equals和==的区别?
equals()方法:一般是比较2个对象的属性,如果属性相等返回true。equals()方法:等价于==比较2个对象。对于基本数据类型和引用数据类型作用效果不同。对于基本数据类型,比较的是。对于引用数据类型,比较的是。原创 2024-06-22 13:41:33 · 116 阅读 · 0 评论 -
类加载过程
参考:B站《【JVM】Java类加载机制这块算是玩明白了》java类的生命周期加载:读取class文件,转化为某种静态数据结构存储在方法区中,并在堆中生成一个便于用户调用java.lang.Class类型的对象的过程验证:对静态结构进行语法语义上的分析,确保不会产生危害虚拟机的行为准备:为类变量分配内存和并初始化类变量值解析:把符号引用替换为直接引用。符号引用是一组用来描述引用对象的一组符号直接引用:内存中的地址。A调用的B是一个具体的类那么就是静态解析;如果B是一个抽象类或接口,原创 2024-05-26 18:56:12 · 261 阅读 · 0 评论 -
Object类方法
默认情况下,这个方法比较的是两个对象的引用是否相同,但是通常会在子类中重写这个方法以实现自定义的相等性比较。要实现clone()方法,类必须实现Cloneable接口,并且重写clone()方法。finalize(): 在对象被垃圾回收之前调用,可以重写此方法来执行资源释放等清理工作。notify(), notifyAll(), wait(): 这些方法用于线程同步和通信。hashCode(): 返回对象的哈希码。getClass(): 返回对象的运行时类。getClass(): 返回对象的运行时类。原创 2024-03-03 18:18:21 · 236 阅读 · 1 评论 -
final修饰类,方法,变量上的区别
final修饰 类: 不能被继承。final修饰方法:不能被重写。final修饰变量:不可修改。原创 2024-03-03 14:27:52 · 87 阅读 · 0 评论