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