單例模式線程安全,單例模式中懶漢式和餓漢式實現

 2023-11-22 阅读 32 评论 0

摘要:單例模式的代碼實現 1.懶漢式代碼實現: public class Singleton {//默認不會實例化,什么時候用就什么時候newprivate static Singleton instance = null;private Singleton(){}public static synchronized Singleton getInstance(){if(instance ==

單例模式的代碼實現

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.開銷

餓漢式在一開始類加載的時候就實例化,無論使用與否,都會實例化,所以會占據空間,浪費內存。懶漢式什么時候用就什么時候實例化,不浪費內存

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/186840.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息