SpringMVC是單例的,高併發狀況下,如何保證性能的?

首先在你們的思考中,確定有影響的,你想一想,單例顧名思義:一個個排隊過...  高訪問量的時候,你能想象服務器的壓力了... 並且用戶體驗也不怎麼好,等待過久~html

 

實質上這種理解是錯誤的,Java裏有個API叫作ThreadLocal,spring單例模式下用它來切換不一樣線程之間的參數。用ThreadLocal是爲了保證線程安全,實際上ThreadLoacal的key就是當前線程的Thread實例。單例模式下,spring把每一個線程可能存在線程安全問題的參數值放進了ThreadLocal。這樣雖然是一個實例在操做,可是不一樣線程下的數據互相之間都是隔離的,由於運行時建立和銷燬的bean大大減小了,因此大多數場景下這種方式對內存資源的消耗較少,並且併發越高優點越明顯。

spring

總的來講就是,單利模式由於大大節省了實例的建立和銷燬,有利於提升性能,而ThreadLocal用來保證線程安全性。

另外補充說一句,單例模式是spring推薦的配置,它在高併發下能極大的節省資源,提升服務抗壓能力。spring IOC的bean管理器是「絕對的線程安全」。
 
http://www.cnblogs.com/doit8791/p/4093808.html
相關文章
相關標籤/搜索