2016-11-13 61 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爲準對象),然後將請求則需要節流或簡單地添加同步的方法進行加工(或關鍵部分)的豆。但是,總體而言,除非您遇到一些問題或處理原子性(將多個事務作爲一個工作單元來處理),否則不建議這樣做。