spring中bean的单例bean不是单例模式

bean的单例不是单例模式。

userService类型的bean可以有多个,单例bean是指name叫userService的bean只有一个。

而单例模式,假如userService类是单例模式,那么用userService创建的对象就只有一个。这才叫单例模式。不然就不叫单例模式了。是为了防止创建多个对象造成的性能开销,所以限制只能创建一个对象。比如mysql的连接对象。每次访问时不可能创建新的对象,占用新的数据库连接。都是复用的同一个对象。

 

 

 

双检锁:实现单例模式

第一个判空是为了不让多线程直接竞争锁,先判空再竞争锁为了效率。

加锁

第二次判空,因为线程A结束时有可能被等待的线程直接获取锁然后创建对象,造成重复创建对象。所以要第二次判空。

指令重排volatile

 

posted @ 2024-08-19 09:12  人在代码在  阅读(89)  评论(0)    收藏  举报