单例模式

  以无延迟加载考虑时,枚举式单例好于饿汉式单例

  饿汉式单例模式

复制代码
 1 /**
 2  * 饿汉式单例模式.无延迟加载,线程安全,(方法不同步)调用效率高
 3  * @author 小雨
 4  *
 5  */
 6 public class SingleTest03 {
 7     //类加载时,是线程安全的
 8     private static final SingleTest03 s = new SingleTest03();
 9     private SingleTest03(){}
10     public static SingleTest03 getInstance(){
11         return s;
12     }
13 }
复制代码

  枚举式单例模式

复制代码
 1 /**
 2  * 枚举类式单例模式.无延迟加载,线程安全,调用效率高
 3  * @author 小雨
 4  *
 5  */
 6 //枚举本身就是单例
 7 public enum SingleTest04 {
 8     INSTANCE;
 9     //也可以根据需要写方法
10     public void ss(){}
11 
12 }
复制代码

  以有延迟加载考虑时,静态内部单例好于懒汉式单例

  懒汉式单例模式

复制代码
 1 /**
 2  * 懒汉式单例模式.延迟加载,线程安全,(方法同步)调用效率不高
 3  * @author 小雨
 4  *
 5  */
 6 public class SingleTest01 {
 7     private static SingleTest01 s;
 8     private SingleTest01(){}
 9     public static synchronized SingleTest01 getInstance(){
10         if(s==null){
11             s = new SingleTest01();
12         }
13         return s;
14     }
15 }
复制代码

  静态内部类单例模式

复制代码
 1 /**
 2  * 静态内部类式单例模式.延迟加载,线程安全,(方法不同步)调用效率高
 3  * @author 小雨
 4  *
 5  */
 6 public class SingleTest02 {
 7     
 8     private SingleTest02(){}
 9     
10     //用到时才会加载内部类,并且是线程安全的
11     private static class SingleClassInstance{
12         private static final SingleTest02 instance = new SingleTest02();
13     }
14     public static SingleTest02 getInstance(){
15         return SingleClassInstance.instance;
16     }
17 }
复制代码

 

posted @   努力的小雨  阅读(139)  评论(0编辑  收藏  举报
编辑推荐:
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
阅读排行:
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示