Title

java单例模式

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

饿汉模式:

//单例模式:饿汉模式
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;
    }
}
优化

 

 

 

 

 

posted @ 2019-12-10 10:38  快乐小洋人  阅读(102)  评论(0编辑  收藏  举报