Spring(十一):Spring Bean 是线程安全的吗?
Spring 中的默认为所有申明为 Bean
的对象创建一个实例存放到IoC
容器进行管理的,这些Bean
对象对于多线程来说是共享的,所以严格来说 Spring Bean 是非线程安全的。Spring 本身就没有对 bean 的多线程安全问题做出任何保证与措施。
Spring 中的默认为所有申明为 Bean
的对象创建一个实例存放到IoC
容器进行管理的,这些Bean
对象对于多线程来说是共享的,所以严格来说 Spring Bean 是非线程安全的。Spring 本身就没有对 bean 的多线程安全问题做出任何保证与措施。
什么是线程安全?什么是非线程安全,该如何定义和理解?什么场景会出现非线程安全?这几个问题在脑子里有个概念和轮廓,但要描述清楚始终不得,不全,非一两个例子代码。
面试中经常会被问到:Servlet 是单例还是多例,这是一个很基础的问题,主要考察面试者的基础是否扎实。还可以关联出一串更深层的问题来考察面试者的知识深度。
问:Servlet是单例还是多例?
答:单例
问:单例情况下在多个请求时是怎么处理的?
答:多线程,为每个请求分配一条线程
问:单例在并发情况下线程是否安全?
答:不安全
问:有没有办法解决?
答:有。。。。如果回答可以使用 ThreadLocal
来隔离每个请求的线程是最好的。接着更深的坑
问:ThreadLocal 的原理是什么?怎么实现的?
答:。。。。答不上来 OR 回答上来了。后面正等着呢
问:使用ThreadLocal与同步代码块,那个优劣?
问:多线程。。。。并发。。。。。
答:。。。。死穴。。。。OVER