分类: Java面试题

24 篇文章

Spring的声明式事务在多线程的场景当中会失效,那怎么解决呢?
Spring的声明式事务在多线程场景中确实会失效,主要是由于事务管理依赖于ThreadLocal存储连接。以下是详细的失效原因和解决方案: 1. 失效原因分析 @Service public class UserService { @Transactional public void processInNewThread() { new Threa…
java Integer和int有什么区别,为什么要设计封装类?
Java 中 int和 Integer的主要区别如下: 核心区别 特性int (基本类型)Integer (包装类)类型基本数据类型类(引用类型)内存栈内存存储值堆内存存储对象默认值0null比较用 == 比较值用 equals() 比较值,== 比较引用泛型不能用于泛型可用于泛型(如 List<Integer>)方法无方法提供丰富方法…
Spring如何解决循环依赖问题?
Spring 通过三级缓存机制解决单例 Bean 的循环依赖问题,但仅适用于通过 setter/字段注入的循环依赖,构造器注入的循环依赖无法通过三级缓存解决。 一、三级缓存结构 // Spring 中的三级缓存 public class DefaultSingletonBeanRegistry { // 一级缓存:存放完全初始化好的 Bean(成品…
Java 中 Lock 和 synchronized 的区别是什么?
1. 基本特性对比 特性synchronizedLock (如 ReentrantLock)实现方式​Java 关键字,JVM 内置支持Java 接口,需要显式创建对象锁获取​自动获取和释放锁需要显式调用 lock() 和 unlock()灵活性​较低,结构固定较高,可控制锁的获取时机性能​早期版本较差,JDK 1.6 后大幅优化通常性能更好,尤其…