当前位置: 移动技术网 > IT编程>开发语言>Java > Java中的单例模式三种类型

Java中的单例模式三种类型

2020年07月31日  | 移动技术网IT编程  | 我要评论

饿汉式

特点:

  • 1.类加载时就创建
  • 2.对象只创建一次
  • 3.天生线程安全

创建过程

  • 1.对象作为属性,且私有静态final修饰
  • 2.构造方法私有化
  • 3.提供获取对象的方法
/**
 * 单例模式
 * 饿汉式
 * @author lzp
 * @Date 2020年7月30日
 */
public class SingleTon {
	//设置私有静态final,外部无法访问,且且类加载时就创建,并只创建一次
    private static final SingleTon singleTon = new SingleTon();

    private SingleTon() {
    }

    public static SingleTon getInstance() {
        return singleTon;
    }
}

懒汉式

特点:

  • 1.类在需要时才创建
  • 2.对象只创建一次
  • 3.线程不安全,可以使用同步方法保证线程安全

创建过程

  • 1.对象作为属性,且私有静态修饰
  • 2.构造方法私有化
  • 3.提供获取对象的方法
  • 4.可以使用同步代码块或者同步方法来保障线程安全
/**
 * 单例模式
 * 懒汉式
 * @author lzp
 * @Date 2020年7月30日
 */
public class SingleTon2 {
    private static SingleTon2 singleTon = null;

    private SingleTon2() {
    }

    // 同步方法
    //	public static synchronized SingleTon2 getInstance() {
    //		if(singleTon == null) {
    //			singleTon = new SingleTon2();
    //		}
    //		return singleTon;
    //	}

    //同步代码块 代码量较多时更优化
    public static SingleTon2 getInstance() {
        if (singleTon == null) {
            synchronized (SingleTon.class) {
                if (singleTon == null) {
                    singleTon = new SingleTon2();
                }
            }
            singleTon = new SingleTon2();
        }
        return singleTon;
    }
}

静态内部类方式

特点:

  • 1.线程安全
  • 2.用时才创建
  • 结合了饿汉和懒汉的优点

创建过程:

  • 1.私有化构造方法
  • 2.创建内部类,设置静态对象
  • 3.创建获取对象的方法
/**
 * 单例模式 
 * 静态内部类式
 * @author lzp
 * @Date 2020年7月30日
 */
public class SingleTon3 {
	//私有化构造方法
    private SingleTon3() {
    }

    //获取对象
    public static SingleTon3 getInstance() {
        return Holder.singleTon3;
    }

    //内部类
    private static class Holder{
        //对象只会创建一次
        static SingleTon3 singleTon3 = new SingleTon3();
    }


}

本文地址:https://blog.csdn.net/qq_42365534/article/details/107695804

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网