并行请求由一个Spring单例bean并行/顺序处理
我已参考了这些链接,但仍有疑问并行请求由一个Spring单例bean并行/顺序处理,spring,singleton,stateless,Spring,Singleton,Stateless,我已参考了这些链接,但仍有疑问 我的问题/疑问:并行请求是否会由一个Spring singleton bean并行/顺序处理[因为这只是一个对象/实例],例如@Controller、@Service,甚至在多核处理器上(并行线程执行能力) 希望不是,但它是如何工作的。 从第一个链接中,我得到了一些理解-一个singleton bean对象,这个singleton bean的一个字节码实例-它由线程堆栈独立访问-但不能corelate在常见情况下,Spring singleton类由不同的线程
我的问题/疑问:并行请求是否会由一个Spring singleton bean并行/顺序处理[因为这只是一个对象/实例],例如@Controller、@Service,甚至在多核处理器上(并行线程执行能力) 希望不是,但它是如何工作的。
从第一个链接中,我得到了一些理解-一个singleton bean对象,这个singleton bean的一个字节码实例-它由线程堆栈独立访问-但不能corelate在常见情况下,Spring singleton类由不同的线程并行处理 Springbean是存储在Spring上下文中的简单java对象(可以包装)。以及如何并行处理每个简单的java对象 在某些特殊情况下,可能会按顺序处理它,例如,当您使用某些锁定、同步方法和其他阻塞语句时 并行请求是否由一个并行/顺序处理 Spring单例bean,例如@Controller、@Service 对
@Controller
、@Service
的请求将由J2EE容器创建的不同线程并行处理。J2EE容器可以创建的线程数量仅限于内存可用性
单个对象可以服务任意数量的请求(受上述可用内存的限制)
为了更好地理解这个概念,您可以使用Spring MVC的DispatcherServlet
(或任何具有默认行为的Servlet
),它将是由Servlet容器创建的单例对象,同时每个Servlet可以并发处理多个请求(来自用户/客户端)
因此,如果您想要控制单例bean对象(服务/控制器
/DAO
,无论哪个对象)要处理的请求数量,则需要限制请求,或者只需将同步添加到bean的方法(或关键部分)。但是,一般来说,不建议这样做,除非您遇到一些问题或处理原子性(将多个事务作为单个工作单元处理)