靜態(tài)內(nèi)部類單例模式 java語言下,static單例對象會不會在不同進(jìn)程共享這個單例對象?
java語言下,static單例對象會不會在不同進(jìn)程共享這個單例對象?簡而言之,每個進(jìn)程都有自己獨(dú)立的內(nèi)存空間,然后加載它。單身漢不會自然地被分享。一個進(jìn)程相當(dāng)于擁有自己的單例。如何寫出面試官欣賞的J
java語言下,static單例對象會不會在不同進(jìn)程共享這個單例對象?
簡而言之,每個進(jìn)程都有自己獨(dú)立的內(nèi)存空間,然后加載它。單身漢不會自然地被分享。一個進(jìn)程相當(dāng)于擁有自己的單例。
如何寫出面試官欣賞的Java單例?
1. 對于更常見和相對完美的答案,可以使用DCL(雙重檢查鎖)單例。
2. 另一種完美的編寫方法是靜態(tài)內(nèi)部類的單例。
3. 最后一個是Java集合框架的作者Joshua Bloch在《effective Java》中推薦的“枚舉類型的單元素已經(jīng)成為實(shí)現(xiàn)單例的最佳方式”。
此方法不僅可以確保線程安全,還可以防止序列化和反射。
三種方法中的第一種更為常見和常用。后兩種方法并不常見,但它們是實(shí)現(xiàn)這一目標(biāo)的完美方法。我相信你能把它們寫出來,讓它們在面試官眼前閃閃發(fā)光!