- 博客(10)
- 收藏
- 关注
原创 从源码层面彻底搞清楚FactoryBean和BeanFactory的相同和不同
BeanFactory也是一个接口,该接口定义了非常多的方法,其中getBean方法就是获取Bean的重要方法,IOC中创建Bean的过程就在这里面,同时包括了DI注入,AOP实现等等Spring关键特性。Class<?判断是否实现了FactoryBean接口。
2025-09-15 01:20:22
1847
原创 FutureTask的核心源码解析
摘要:FutureTask是Java并发编程中用于获取线程返回值的工具类,实现了RunnableFuture接口,兼具Runnable和Future特性。其核心在于状态管理(NEW、COMPLETING、NORMAL等状态流转)和CAS操作保证线程安全。通过run方法执行Callable任务,set/setException处理正常/异常结果,cancel方法支持任务中断。源码分析展示了其线程安全设计和状态转换机制,适用于需要获取异步任务执行结果的场景。
2025-09-04 00:20:42
194
1
原创 浅谈ReententReadWriteLock(一)
本文深入分析了ReentrantReadWriteLock的底层实现原理及其特性。其核心是基于AQS机制,通过32位state变量区分读写锁(高16位读锁,低16位写锁)。重点阐述了锁重入机制:写锁通过state低16位计数,读锁则采用ThreadLocal维护HoldCounter对象记录重入次数。此外,文章揭示了读写锁可能导致写锁饥饿的问题,并对比介绍了StampedLock通过乐观读解决该问题的方案。最后详细解析了同步队列的工作机制,确保实现"读读并发、读写互斥、写写互斥"的线程安
2025-09-03 13:43:02
423
原创 关于多个线程依次打印1,2,3,4,5。。。的问题,个人总结
我认为这个问题最关键的点在于:如何保证线程之间的通讯问题。只要保证这个,就相当于很多人排着队来买东西一样,有条不紊。进入正题:条件:三个线程,依次打印1,2,3,4,5.。。。90我是使用Condition实现的,使用wait()和notify()也可以。public class Test { private static Lock lock = new ReentrantLock(); private static Condition condition1 = lock.new
2021-05-13 00:14:49
389
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅