2016-11-13 140 views
0

我已经refered这些链接,但仍然有疑问
concurrent request to singleton bean
another less relevant link并行请求被并行/由一个弹簧单豆连续处理

我的Q /疑问:请问并行请求由一个处理并行/顺序Spring单例bean [因为这只是一个对象/实例]例如@Controller,@Service即使在多核处理器上(并行线程执行能力)

希望不是,但它是如何工作的。
从第一个链接,我得到了一些理解 - 一个单例bean对象,这singeton bean的字节码的一个实例 - 这是由线程堆栈单独访问 - 但不能corelate

回答

0

在通常情况下你的春季单类由不同的线程并行处理。

Spring bean它是一个简单的java对象(可以被包装)存储在spring的上下文中。以及每个简单的java对象如何可以并行处理这个对象。

它可能会在某些特殊情况下按顺序处理,例如,当您使用某些锁定,同步方法和其他阻塞语句时。

0

将平行/顺序处理并行请求一个 例如Spring单例bean,例如@Controller,@Service?

@Controller的请求,@Service将平行由J2EE容器中创建的不同线程处理。 J2EE容器可以创建的线程数限于内存可用性。

单个对象可以提供任意数量的请求(受限于上面提到的可用内存)。

为了更好地理解这个概念,您可以采用Spring MVC的DispatcherServlet(或任何Servlet具有默认行为),这将是由Servlet容器创建的单例对象,同时每个Servlet可以同时处理多个请求(来自用户/客户)。

所以,如果你想控制的请求的数量由单bean对象(Service/Controller/DAO为准对象),然后将请求则需要节流或简单地添加同步的方法进行加工(或关键部分)的豆。但是,总体而言,除非您遇到一些问题或处理原子性(将多个事务作为一个工作单元来处理),否则不建议这样做。