本人java開發,今天在研究秒殺問題的時候,突然間腦子裏就產生了這樣的思考。
衆所周知,Spring默認是單例模式,那麼單例模式有什麼優缺點呢?
優點一:創建的對象較少!在Tomcat模型爲BIO
時,會對每一個請求創建一個線程,如果創建的線程數較大,每一個線程中都有@Autowire這種註解,那麼創建的對象就會非常之多。另外,如果對象B注入到對象A的屬性中,如果對象A被創建了多個對象,那麼對象B也會被創建多個,層層依賴。
當然如果是NIO,就沒有單例的必要了,因爲它只會用一個線程了來處理數據請求,這也註定NIO不能用來IO密集型操作。
缺點一:由於只有一個對象,如果屬於類的成員變量,則會被多次調用,類似於類的靜態變量。
缺點二:BIO中,如果你在這個對象中的方法上使用了Synchronized
,代表鎖住的是該對象。