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


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

 

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

總的來說就是,單利模式因為大大節省了實例的創建和銷毀,有利於提高性能,而ThreadLocal用來保證線程安全性。

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM