java单例模式

*爱你&永不变心* 提交于 2019-12-10 10:52:16

单例模式分为两种:饿汉模式         懒汉模式

饿汉模式:

//单例模式:饿汉模式
public class TestSingleton {
    //1、私有化构造
    private TestSingleton(){
        
    }
    //2、私有静态属性对象实例
    private static final  TestSingleton singleton=new TestSingleton();
    //3、公开获取实例方法
    public static TestSingleton getTestObject() {
        return singleton;
    }
}
饿汉模式

懒汉模式:

//单例模式:懒汉模式
class TestSingleton{
    //1、私有化构造
    private TestSingleton(){
        
    }
    //2、私有静态属性唯一对象引用
    private static  TestSingleton singleton;
    //3、公开获取实例方法(懒汉模式有个缺点在多线程时候可能创建多个对象)
    public static TestSingleton getTestObject() {
        
        if(singleton==null) {
            singleton=new TestSingleton();
        }
        
        return singleton;
    }
}
懒汉模式

恶汉模式在开启多线程的时候有可能出现创建多个对象的问题,下面进行优化:获取对象方法加同步锁

优化:

//单例模式:懒汉模式
class TestSingleton{
    //1、私有化构造
    private TestSingleton(){
        
    }
    //2、私有静态属性唯一对象引用
    private static  TestSingleton singleton;

    //3、公开获取实例方法(优化:加同步锁)
    public static synchronized TestSingleton getTestObject() {
        
        if(singleton==null) {
            singleton=new TestSingleton();
        }
        
        return singleton;
    }
}
优化

 

 

 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!