最贊回答 / 0x0wh04m1
因為這個類在加載的時候就實例化了,就算thread1和thread2同時獲取它,取到的是類加載時實例化的那個變量的值,所以說是線程安全的;而懶漢式線程不安全,因為有可能thread1在if(instance==null)判斷為真時進入了if體里但又沒開始實例化,而這時thread2也進來了,最終就會有2個實例了。
2016-07-29
最贊回答 / weibo_SecturityE_0
使用JVM本身機制保證了線程安全問題;由于 SingletonHolder 是私有的,除了 getInstance() 之外沒有辦法訪問它,因此它是懶漢式的;同時讀取實例的時候不會進行同步,沒有性能缺陷
2015-10-12
最新回答 / AAnonymous
這個問題好功能上應該是可以用全局變量代替單例的但是Java并不建議使用全局變量http://stackoverflow.com/questions/4646577/global-variables-in-java
2015-08-11
最贊回答 / Tips
老師只在類里面創建了一個實例,我只給第一個(餓漢模式)說明一下:1.老師先在第一步中創建一個實例:instance ?????????要說明的是instance相當于一個人的姓名,就像剛出生的孩子我們會給他取一個稱呼叫‘張三’,new的一個實例(對象)我們也要給他取一個名字叫‘instance’.那么我們就可以用instance來確定,它就是那個新建的實例。2.然后老師在第三步給出了一個方法(這是一個靜態的開放權限的方法,可以通過類名直接調用):這個方法反回了instance(相當于人的名字,而不是那個具...
2015-01-30