首页后端开发JAVAjava恶汉单例和懒汉单例

java恶汉单例和懒汉单例

时间2023-10-27 08:30:03发布访客分类JAVA浏览594
导读:在Java编程中,单例模式是一种常见的设计模式,旨在确保程序中的某个类只有一个实例对象存在。由于此类只能创建一个对象,因此单例模式在许多情况下都能提高程序性能,避免资源浪费垃圾问题等问题。而在Java中,单例模式可以分为恶汉单例和懒汉单例两...

在Java编程中,单例模式是一种常见的设计模式,旨在确保程序中的某个类只有一个实例对象存在。由于此类只能创建一个对象,因此单例模式在许多情况下都能提高程序性能,避免资源浪费垃圾问题等问题。而在Java中,单例模式可以分为恶汉单例和懒汉单例两种模式。

恶汉单例是在类被加载时就创建一个单例对象,例如:

public class EvilSingleton {
    private static final EvilSingleton INSTANCE = new EvilSingleton();
private EvilSingleton(){
}
public static EvilSingleton getInstance(){
    return INSTANCE;
}
}

可以看到,在类加载时,立即创建了一个INSTANCE对象。这样的好处是在Singleton被加载时就实例化了,所以不会有线程安全的问题。缺点是如果该实例的创建依赖于配置文件等资源,或者实例化非常耗时,这种实现方式可能会导致程序启动变慢。

懒汉单例模式则是在第一次使用时才会实例化一个对象,例如:

public class LazySingleton {
    private static volatile LazySingleton INSTANCE;
private LazySingleton(){
}
public static LazySingleton getInstance(){
if(INSTANCE == null){
synchronized (LazySingleton.class) {
if(INSTANCE == null){
    INSTANCE = new LazySingleton();
}
}
}
    return INSTANCE;
}
}
    

可以看到,我们将INSTANCE设置为volatile,使用双重检查,这样可以在保证线程安全的同时,也能够延迟实例的创建,解决了恶汉单例的缺点。不过,这种实现方式也容易出现线程安全问题,需要开发者格外注意。

总之,恶汉单例和懒汉单例都是常见的单例模式实现方式,开发者应根据具体需求选择不同的实现方式。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: java恶汉单例和懒汉单例
本文地址: https://pptw.com/jishu/512828.html
java怎么求奇数和 java成员属性和成员方法

游客 回复需填写必要信息