1.懶漢式代碼實現:
public class Singleton {//默認不會實例化,什么時候用就什么時候newprivate static Singleton instance = null;private Singleton(){}public static synchronized Singleton getInstance(){if(instance == null){//什么時候用就什么時候newinstance = new Singleton();}return instance;}
}
2.餓漢式代碼實現:
public class Singleton {//一開始類加載的時候就實例化,創建單實例對象private static Singleton instance = new Singleton();private Singleton(){}public static Singleton getInstance(){return instance;}
}
1.線程安全性
餓漢式在線程還沒出現之前就已經實例化了,所以餓漢式一定是線程安全的。懶漢式加載是在使用時才會去new 實例的,那么你去new的時候是一個動態的過程,是放到方法中實現的
2.效率
效率與線程安全性一般成正比
餓漢式沒有加任何的鎖,因此執行效率比較高。懶漢式一般使用都會加同步鎖,效率比餓漢式差。
3.開銷
餓漢式在一開始類加載的時候就實例化,無論使用與否,都會實例化,所以會占據空間,浪費內存。懶漢式什么時候用就什么時候實例化,不浪費內存
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态