摘要:
ThreadLocal内存泄漏问题 内存泄漏: 不再会被使用的对象或者变量占用的内存不能被回收,就是内存泄漏 为什么要用弱引用? 为什么要用弱引用: 当方法执行完毕后,栈帧销毁,强引用t1也就没有了,但此时线程的ThreadLocalMap里某个entry的Key引用还指向这个对象,若这个Key是强 阅读全文
posted @ 2025-12-03 20:44
扛着音响去化缘
阅读(0)
评论(0)
推荐(0)
摘要:
Thread、ThreadLocal、ThreadLocalMap关系 Thread、ThreadLocal、ThreadLocalMap关系 当我们为ThreadLocal变量赋值,实际上就是以当前ThreadLocal实例为Key,值为value的Entry往这个ThreadLocalMap中存 阅读全文
posted @ 2025-12-03 20:44
扛着音响去化缘
阅读(0)
评论(0)
推荐(0)

AQS内部体系结构 AQS内部体系架构 ① AQS自身(State变量+CLH双端队列): AQS的int类型变量state(锁的状态) AQS的同步状态State成员变量 银行办理业务的受理窗口状态 零就是没人,自由状态可以去办理 大于等于1,有人占用窗口,等着去 AQS的CLH队列 CLH(三个
从ReentrantLock入手AQS源码解析 ReentrantLock的原理: Lock接口的实现类,基本都是通过聚合了一个队列同步器的子类完成线程访问控制的 以非公平锁ReentrantLock()为例作为突破走起 方法lock(): 对比公平锁和非公平锁的tryAcquire()方法的实现代
Synchronized锁种类及升级步骤 Synchronized锁种类及升级步骤: (注意:读二进制时,每一行从右往左读,每一组二进制从左往右读) ①无锁: ②偏向锁: 单线程竞争,当线程A第一次竞争到锁时,通过修改MarkWord中的偏向线程ID、偏向模式。如果不存在其他线程竞争,那么持有偏向锁
锁升级总结 锁升级的过程: 各种锁优缺点、synchronized锁升级和实现原理: JIT编译器对锁的优化: ①:锁消除(每次方法中都会new出来o,相当于没有锁了) 锁消除案例演示: * 从JIT角度看想相当于无视他,synchronized(o)不存在了 * 这个锁对象并没有被共用扩散到其他线
浙公网安备 33010602011771号