锁(补充中..)
· 阅读需 9 分钟
与Java代码、Spring有关的
查看所有标签轻量级实现:虚拟线程(Virtual Threads)由JVM管理,与操作系统线程解耦,单应用可创建数百万个线程,解决了传统线程的资源限制问题。
核心优势对比:
资源消耗低:创建和销毁开销仅为平台线程的1/1000,适用于高并发场景。
高效调度:通过挂起机制减少上下文切换,I/O阻塞时自动释放载体线程(Carrier Thread)。
简化编程:语法与传统线程兼容,无需学习复杂并发框架。
文字链接:https://www.zhihu.com/question/445446018/answer/3796620273
三级缓存介绍
SpringBoot中的三级缓存主要是为了解决循环依赖问题的。
singletonObjects):
存放的是已经完全实例化和初始化的 Bean,这个 Bean 是完整的,可以随时拿出来直接用,类似成品。比如 Map<String, Object> singletonObjects就是所有生成完成的 Bean 放在这里面。earlySingletonObjects)
存放的是还没经过 AOP 代理的 Bean,这些 Bean 是一种“半成品”。在处理一些复杂依赖时,Spring 可能会先创建一个“半成品 Bean”防止被人重复创建,结果把引用给弄乱了。比如 Map<String, Object> earlySingletonObjects。singletonFactories)
这是关键。三级缓存里放的是一个 ObjectFactory 工厂引用,也就是生成 Bean 的回调方法。在循环依赖时,这个工厂能够在还没完全生成 Bean 时,就提供一个“临时引用”给其他对象依赖,保证 Bean 的生成不会出错。