SpringMVC默认单例模式如何保证性能

问题:SpringMVC 默认创建 Bean 是单例的,在高并发情况下是如何保证性能的?

首先在大家的思考中,肯定有影响的,你想想,单例顾名思义:一个个排队过...  高访问量的时候,你能想象服务器的压力了... 而且用户体验也不怎么好,等待太久~

实质上这种理解是错误的,Java里有个API叫做 ThreadLocal,Spring 单例模式下用它来切换不同线程之间的参数。用ThreadLocal是为了保证线程安全,实际上ThreadLoacal的key就是当前线程的Thread实例。单例模式下,Spring 把每个线程可能存在线程安全问题的参数值放进了 ThreadLocal。这样虽然是一个实例在操作,但是不同线程下的数据互相之间都是隔离的,因为运行时创建和销毁的 Bean 大大减少了,所以大多数场景下这种方式对内存资源的消耗较少,而且并发越高优势越明显。

总的来说就是,单利模式因为大大节省了实例的创建和销毁,有利于提高性能,而ThreadLocal用来保证线程安全性。单例模式是spring推荐的配置,它在高并发下能极大的节省资源,提高服务抗压能力

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值