
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
ReentrantLock是JUC并发包下基于AQS实现的独占锁,**支持可重入**,并提供公平锁、非公平锁两种模式。本文讲解可重入实现原理,明确公平锁获取失败后的入队规则,清晰对比两种锁的核心差异。
Executors 是 JDK 提供的线程池工具类,虽然使用简单,但**生产环境严禁使用**。其封装的线程池存在**无界队列、无界线程、参数不可控**三大致命隐患,极易引发 OOM 崩溃和服务雪崩。本文结合具体场景说明隐患原因,并详解 ThreadPoolExecutor 核心参数与执行逻辑。
ConcurrentHashMap是Java并发包中高效的线程安全哈希表,解决了HashMap线程不安全、Hashtable全表锁性能低下的问题。它通过细粒度锁机制保证线程安全,JDK7与JDK8的底层实现差异显著,本文通俗讲解其安全原理和两个版本的核心区别。
CMS(Concurrent Mark Sweep)是JDK1.5推出的**并发低延迟老年代垃圾收集器**,核心目标是最小化GC全局停顿(STW)时间。它采用标记-清除算法,将大部分耗时操作与用户线程并发执行,仅保留必要的短暂停顿,是互联网、电商等对响应时间敏感场景的里程碑式设计。
G1(Garbage-First)是JDK9默认的垃圾收集器,全面取代CMS。它打破了传统分代收集的物理限制,采用**Region分区设计**,兼顾吞吐量与低延迟,支持用户设置最大停顿时间。本文讲解G1核心工作原理,并通过表格对比其与CMS的关键差异。
JVM运行时数据区是Java程序运行时的内存划分方案,理解哪些区域是线程私有的、哪些是共享的,是JVM调优和故障排查的基础。本文用一张总图、两张分类流程图和一张对比表格,帮你一次性理清。
对象由对象头 + 实例数据 + 对齐填充三部分组成Mark Word在不同锁状态下复用存储空间,是锁升级和 GC 的基础JVM 自动字段重排序优化内存布局,减少填充浪费开启压缩指针(-XX:+UseCompressedOops)可显著减少对象头中类型指针和引用类型字段的大小。
DCL单例模式最常见的错误是忘记使用volatile关键字,导致指令重排序引发的空指针异常。完整流程是:1) 分配内存→2) 初始化→3) 引用赋值,但JVM可能重排序为1→3→2。当线程A执行到步骤3时,instance已非null但对象未初始化,此时线程B直接获取这个半成品对象就会出错。正确写法必须用volatile修饰instance变量,禁止指令重排序。这是90%开发者容易忽略的关键点,不
摘要: Java的synchronized锁具备可重入机制,允许同一线程多次获取同一把锁而避免死锁。其核心原理是通过计数器实现:加锁时计数器+1,释放时-1,归零后锁才真正释放。重量级锁通过Monitor的owner和count字段实现;轻量级锁则依赖线程栈中的锁记录链表。若无可重入,递归调用同步方法会导致线程自我阻塞。典型误区包括混淆不同线程的重入、静态/实例锁混用等。可重入机制对性能影响极小,
摘要: Java中synchronized和ReentrantLock是两种主流锁机制,核心区别如下: 实现与特性:synchronized是JVM内置关键字,自动加锁/释放,简单但功能有限;ReentrantLock是JDK类,需手动管理锁,支持公平锁、中断、超时等高级功能。 性能与场景:低竞争时synchronized更优(JDK1.6+优化后),高竞争时ReentrantLock更稳定;公平







