- 博客(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关注的人
RSS订阅