当前位置: 首页> 教育> 就业 > 在线网站建设诚信经营_今日最新军情_友情链接多少钱一个_策划方案网站

在线网站建设诚信经营_今日最新军情_友情链接多少钱一个_策划方案网站

时间:2025/7/9 5:23:21来源:https://blog.csdn.net/2401_86523075/article/details/145993452 浏览次数:0次
在线网站建设诚信经营_今日最新军情_友情链接多少钱一个_策划方案网站

单例设计模式—懒汉式–线程安全和不安全

优点
资源利用率高:只有在真正需要使用单例实例时才进行创建,避免了在应用启动时就占用不必要的资源。
缺点
线程安全问题:在多线程环境下,如果多个线程同时调用获取实例的方法,可能会导致创建多个实例,破坏单例模式的规则。需要额外的同步机制来保证线程安全,但这可能会带来一定的性能开销。

线程不安全

//懒汉式 线程不安全
public class Singleton {//私有构造方法private Singleton(){}//声明Singleton类型的变量instanceprivate static Singleton instance;//只是声明了该类型的变量,并没有创建//对外提供访问方式public static Singleton getInstance(){//判断instance是否为null,如果为null,说明还没有创建Singleton类的对象//如果没有创建一个并返回。如果有,直接返回if(instance == null){//线程1等待,线程2获取到cpu的执行权,也会进入到该判断里面//多线程执行时,只要线程停留在这里,其他线程就可以进入,那么就不是单实例模式instance = new Singleton();}instance=new Singleton();return instance;}
}public class Client {public static void main(String[] args) {Singleton instance =Singleton.getInstance();Singleton instance1 =Singleton.getInstance();//判断两次获取到的Singleton对象是否是同一个对象System.out.println(instance==instance1);}
}

线程安全

//线程安全,依据以上线程不安全做修改
public class Singleton {//私有构造方法private Singleton(){}//声明Singleton类型的变量instanceprivate static Singleton instance;//只是声明了该类型的变量,并没有创建//对外提供访问方式public static synchronized Singleton getInstance(){if(instance == null){instance = new Singleton();}instance=new Singleton();return instance;}
}

枚举类
饿汉式枚举类是实现单例模式的一种高效且安全的方式。
枚举类型在 Java 中是一种特殊的类,它的实例是有限且固定的。当使用枚举类实现单例模式时,枚举类的实例在类加载时就会被创建,并且是唯一的,这符合饿汉式单例的特点,即在类加载时就初始化单例实例。同时,Java 语言规范保证了枚举类型的实例是线程安全的,并且可以防止反射攻击和反序列化时创建新的实例。

package patten.demo6;
//饿汉式 枚举类
public enum Singleton {INSTANCE;
}

枚举类测试

public class Client {public static void main(String[] args) {Singleton instance = Singleton.INSTANCE;Singleton instance1 = Singleton.INSTANCE;//判断两次获取到的Singleton对象是否是同一个对象System.out.println(instance==instance1);}}
关键字:在线网站建设诚信经营_今日最新军情_友情链接多少钱一个_策划方案网站

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: