自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 可中断锁机制:ReentrantLock的lockInterruptibly解析

ReentrantLock 实现了可中断性,这意味着线程在等待锁的过程中,可以被其他线程中断而提前结束等待。可打断的方法的行为与非常相似:和一样,会完全放弃用户态的,让操作系统调度其他线程。这是所有高效阻塞机制(sleepwaitparklock,即在条件不满足时主动让出CPU,而不是空转浪费资源。当线程在等待锁的被中断,它会立即放弃等待,从阻塞处(调用点)。

2026-06-20 15:33:42 186

原创 syncronized锁升级的过程

摘要:synchronized锁升级过程包括无锁、偏向锁、轻量级锁和重量级锁四个阶段。偏向锁适用于单线程重复获取场景,轻量级锁通过CAS自旋应对少量线程竞争,重量级锁则在高并发时通过线程挂起避免CPU空转。这种自适应机制根据竞争强度动态升级,兼顾了低竞争时的高效性和高竞争时的可靠性,是Java并发性能优化的关键设计。

2026-06-20 15:32:44 204

原创 Java线程间数据传递的5种高效方式

Java线程间数据传递的5种方式摘要: 构造函数传参:通过Runnable实现类的构造函数传递主线程数据。 共享对象:使用volatile修饰的共享对象传递数据,需注意可见性和原子性问题。 消息队列:通过BlockingQueue实现线程安全的数据传递,适合生产者-消费者模式。 InheritableThreadLocal:子线程自动继承父线程上下文,但存在线程池复用时的数据污染问题。 TransmittableThreadLocal(阿里TTL):支持异步任务提交时捕获上下文,是企业级解决方案。

2026-06-17 18:19:31 187

原创 Java中主线程怎么捕获子线程异常

Java多线程异常处理机制解析 摘要:主线程无法直接通过try-catch捕获子线程异常,因线程间异常隔离。本文介绍三种有效处理方案:1)使用Callable+Future组合,通过Future.get()捕获ExecutionException;2)设置线程级UncaughtExceptionHandler处理未捕获异常;3)利用CompletableFuture的exceptionally()方法进行链式异常处理。特别推荐CompletableFuture方案,支持异步回调和非阻塞编程

2026-06-14 14:32:27 2458

原创 String的主要创建方式与比较

摘要:本文介绍了Java中String对象的创建方式和引用机制。String对象可存在于堆区或字符串常量池,不同创建方式会影响对象位置和引用关系。主要方式包括:直接赋值、new创建新对象、intern()返回常量池引用、字符串拼接(编译时优化或运行时创建)。关键区别在于是否创建新对象及引用来源。练习解析表明:new String()创建独立对象,而intern()返回常量池引用,因此s2!=s3但s1==s3。理解这些机制对高效处理字符串至关重要。

2026-06-07 20:49:28 1657

原创 MVCC的概念与实现

MVCC(多版本并发控制)通过UndoLog版本链实现读写无冲突,核心依赖三个隐式字段(事务ID、回滚指针、隐藏主键)、UndoLog版本链和ReadView机制。ReadView包含活跃事务列表、最小/最大事务ID和创建者ID,通过事务ID比较规则决定版本可见性。不同隔离级别影响ReadView生成时机:读已提交每次查询新建,可重复读事务内复用,读未提交直接读最新版本,串行化则退化为锁机制。该机制在保证并发性能的同时实现了事务隔离需求。

2026-06-01 18:21:34 1721

原创 Java线程间数据传递的5种高效方式

Java线程间数据传递的5种方式摘要: 构造函数传参:通过Runnable实现类的构造函数传递主线程数据。 共享对象:使用volatile修饰的共享对象传递数据,需注意可见性和原子性问题。 消息队列:通过BlockingQueue实现线程安全的数据传递,适合生产者-消费者模式。 InheritableThreadLocal:子线程自动继承父线程上下文,但存在线程池复用时的数据污染问题。 TransmittableThreadLocal(阿里TTL):支持异步任务提交时捕获上下文,是企业级解决方案

2026-05-24 15:34:43 1358

原创 String的主要创建方式与比较

摘要:本文介绍了Java中String对象的创建方式和引用机制。String对象可存在于堆区或字符串常量池,不同创建方式会影响对象位置和引用关系。主要方式包括:直接赋值、new创建新对象、intern()返回常量池引用、字符串拼接(编译时优化或运行时创建)。关键区别在于是否创建新对象及引用来源。练习解析表明:new String()创建独立对象,而intern()返回常量池引用,因此s2!=s3但s1==s3。理解这些机制对高效处理字符串至关重要。

2026-05-19 22:23:32 487

原创 MySQL-三大日志

MySQL高性能高可靠离不开三大日志:undo log用于回滚和MVCC;redo log实行WAL铁律,脏页刷盘前其redo必先落盘,杜绝“页新日志缺”的崩溃;binlog默认ROW格式,与redo log两阶段提交保障一致性。Checkpoint LSN标识已落盘页边界,恢复时比对页LSN与日志LSN精准重放。理解这些,才能驾驭事务的原子性、持久性与一致性。

2026-05-17 14:50:51 1881

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除