摘要: 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: 前置知识: 公平锁和非公平锁 公平锁:锁被释放以后,先申请的线程先得到锁。性能较差一些,因为公平锁为了保证时间上的绝对顺序,上下文切换更频繁 非公平锁:锁被释放以后,后申请的线程可能会先获取到锁,是随机或者按照其他优先级排序的。性能更好,但可能会导致某些线程永远无法获取到锁 可 阅读全文
posted @ 2025-11-10 23:17 扛着音响去化缘 阅读(8) 评论(0) 推荐(0)
摘要: AQS内部体系结构 AQS内部体系结构 AQS内部体系架构 ① AQS自身(State变量+CLH双端队列): AQS的int类型变量state(锁的状态) AQS的同步状态State成员变量 银行办理业务的受理窗口状态 零就是没人,自由状态可以去办理 大于等于1,有人占用窗口,等着去 AQS的CLH队列 CLH(三个 阅读全文
posted @ 2025-11-10 23:17 扛着音响去化缘 阅读(7) 评论(0) 推荐(0)
摘要: 从ReentrantLock入手AQS源码解析 从ReentrantLock入手AQS源码解析 ReentrantLock的原理: Lock接口的实现类,基本都是通过聚合了一个队列同步器的子类完成线程访问控制的 以非公平锁ReentrantLock()为例作为突破走起 方法lock(): 对比公平锁和非公平锁的tryAcquire()方法的实现代 阅读全文
posted @ 2025-11-10 23:13 扛着音响去化缘 阅读(5) 评论(0) 推荐(0)
摘要: 对象在堆内存中布局 对象在堆内存中布局: 在HotSpot虚拟机里,对象在堆内存的存储布局可以划分为三个部分:对象头(Header)、实例数据(Instance Data) 和对齐填充(Padding)。 存储布局: 对象头(在64位系统中,Mark Word占了8个字节,类型指针占了8个字节,一共 阅读全文
posted @ 2025-10-31 18:53 扛着音响去化缘 阅读(4) 评论(0) 推荐(0)
摘要: Synchronized锁种类及升级步骤 Synchronized锁种类及升级步骤 Synchronized锁种类及升级步骤: (注意:读二进制时,每一行从右往左读,每一组二进制从左往右读) ①无锁: ②偏向锁: 单线程竞争,当线程A第一次竞争到锁时,通过修改MarkWord中的偏向线程ID、偏向模式。如果不存在其他线程竞争,那么持有偏向锁 阅读全文
posted @ 2025-10-31 18:49 扛着音响去化缘 阅读(2) 评论(0) 推荐(0)
摘要: 锁升级总结 锁升级总结 锁升级的过程: 各种锁优缺点、synchronized锁升级和实现原理: JIT编译器对锁的优化: ①:锁消除(每次方法中都会new出来o,相当于没有锁了) 锁消除案例演示: * 从JIT角度看想相当于无视他,synchronized(o)不存在了 * 这个锁对象并没有被共用扩散到其他线 阅读全文
posted @ 2025-10-31 18:49 扛着音响去化缘 阅读(4) 评论(0) 推荐(0)
摘要: volatile 被volatile修饰的变量有两大特点 特点: 可见性:写完后立即刷新回主内存并及时发出通知,大家可以去主内存拿最新版,前面的修改对后面所有线程可见 有序性:有排序要求,有时需要禁重排 内存语义: 当写一个volatile变量时,JMM会把该线程对应的本地内存中的共享变量值立即刷新 阅读全文
posted @ 2025-10-25 12:43 扛着音响去化缘 阅读(11) 评论(0) 推荐(0)
摘要: LockSupport是什么 LockSupport让线程等待和唤醒的方法和Object类中的区别: 方式一:使用Object中的wait()方法让线程等待,使用Object中的notify()方法唤醒线程 方式二:LockSupport类可以阻塞当前线程以及唤醒指定被阻塞的线程 方式一Object 阅读全文
posted @ 2025-10-13 11:51 扛着音响去化缘 阅读(17) 评论(0) 推荐(0)
Sakana Widget右下角定位