首先在大家的思考中,肯定有影響的,你想想,單例顧名思義:一個個排隊過... 高訪問量的時候,你能想象服務器的壓力了... 而且用戶體驗也不怎么好,等待太久~
實質上這種理解是錯誤的,Java里有個API叫做ThreadLocal,spring單例模式下用它來切換不同線程之間的參數。用ThreadLocal是為了保證線程安全,實際上ThreadLoacal的key就是當前線程的Thread實例。單例模式下,spring把每個線程可能存在線程安全問題的參數值放進了ThreadLocal。這樣雖然是一個實例在操作,但是不同線程下的數據互相之間都是隔離的,因為運行時創建和銷毀的bean大大減少了,所以大多數場景下這種方式對內存資源的消耗較少,而且並發越高優勢越明顯。
總的來說就是,單利模式因為大大節省了實例的創建和銷毀,有利於提高性能,而ThreadLocal用來保證線程安全性。
另外補充說一句,單例模式是spring推薦的配置,它在高並發下能極大的節省資源,提高服務抗壓能力。spring IOC的bean管理器是“絕對的線程安全”。
另外補充說一句,單例模式是spring推薦的配置,它在高並發下能極大的節省資源,提高服務抗壓能力。spring IOC的bean管理器是“絕對的線程安全”。