我已提到这些链接,但仍有疑问
concurrent request to singleton bean
another less relevant link
我的疑问/怀疑:并行请求是否由一个Spring单例bean并行处理[因为这只是一个对象/实例],例如@Controller,@ Service甚至在多核处理器上(并行线程执行能力)
希望不是,但是它是如何运作的。
从第一个链接,我得到了一些理解 - 一个单独的bean对象,这个singeton bean的字节代码的一个实例 - 由独立的线程栈访问 - 但不能核心
答案 0 :(得分:0)
通常情况下,Spring单例类由不同的线程并行处理。
Spring bean它是存储在spring上下文中的简单java对象(可能被包装)。以及每个简单的java对象如何并行处理这个对象。
在某些特殊情况下可以按顺序处理它,例如当你使用某些锁,同步方法和其他阻塞语句时。
答案 1 :(得分:0)
并行请求是否由一个并行/顺序处理 春季单例豆例如@Controller,@ Service?
@Controller
,@Service
的请求将由J2EE容器创建的不同线程并行处理。 J2EE容器可以创建的线程数仅限于内存可用性。
单个对象可以提供任意数量的请求(受上述可用内存限制)。
为了更好地理解这个概念,你可以使用Spring MVC的DispatcherServlet
(或任何具有默认行为的Servlet
),它将是由Servlet容器创建的单个对象,同时每个Servlet可以同时处理多个请求(来自用户/客户端)。
因此,如果您想控制单个bean对象(Service
/ Controller
/ DAO
处理的请求数,无论哪个对象),那么请求需要被限制或简单地将同步添加到bean的方法(或关键部分)。但是,一般情况下,不建议这样做,除非你遇到一些问题或处理原子性(将多个交易作为一个单独的工作单元处理)。