- 博客(4)
- 收藏
- 关注
原创 Spring事务传播行为总结
Spring事务传播行为定义了事务方法的调用规则。REQUIRED是默认行为,存在事务则加入,否则新建;REQUIRED_NEW总是新建事务;SUPPORT支持但不强制事务;NOT_SUPPORT强制非事务执行;MANDATORY要求调用方必须有事务;NEVER禁止调用方有事务;NESTED在已有事务中创建嵌套子事务,适用于批处理场景,允许部分失败不影响整体。这些规则通过@Transactional注解的propagation属性设置,用于控制事务边界和异常处理策略。
2026-01-21 19:38:26
18
原创 CMS垃圾回收器(Concurrentn mark sweep)
CMS垃圾回收器调优摘要:CMS(Concurrent Mark-Sweep)是一种以低延迟为目标的并发垃圾回收器,通过三色标记、写屏障和增量更新机制实现。其核心阶段包括初始标记(STW)、并发标记、重新标记(STW)和并发清除。关键调优参数包括:设置并行标记(-XX:CMSParallel*)、触发阈值(-XX:CMSInitiatingOccupancyFraction)、压缩策略(-XX:UseCMSCompactAtFullCollection)等。主要痛点包括并发失败、内存碎片和浮动垃圾问题。优化
2026-01-09 19:43:55
464
原创 Synchronized不同锁状态下获取锁的流程
摘要:本文详细分析了Java中三种锁(重量级锁、轻量级锁、偏向锁)的获取与释放机制。重量级锁通过ObjectMonitor管理线程竞争,包含快速抢锁、EntryList排队、非公平唤醒等阶段;轻量级锁通过CAS操作和LockRecord实现无竞争情况下的高效同步,失败时升级为重量级锁;偏向锁优化单线程场景,通过标记线程ID实现零成本重入。三种锁根据竞争程度动态升级,其中重量级锁涉及线程阻塞/唤醒,轻量级锁依赖CAS自旋,偏向锁最适合单线程场景。锁状态转换受hashCode调用、wait/notify等因素影
2025-12-24 20:31:51
825
原创 线程池ThreadPoolExecutor的execute执行流程分析非源码,只有流程设计图,可以自行对照源码,有流程图会更好理解,从线程池五大状态的语义入手进行分析。
线程销毁的过程和线程数扣减的挂钩,只有当线程数扣减成功,才会去销毁线程,这个销毁,指的是不可达之后,被gc回收,扣减线程数在getTask()进行,而线程的销毁则在processWorkerExit()方法,中间隔了一个runWorker()方法,因为可能存在异常,需要销毁线程,这个时候由于没有扣减线程数,所以需要在processWorkerExit()方法中单独判断是否发生异常,如然后扣减线程数。异常是不可预测的(任务抛异常、线程被意外中断),线程在执行任务时直接崩溃,根本走不到。
2025-12-21 20:30:39
727
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅