一、Java笔记之-懒汉模式与饿汉模式
- 一、饿汉模式,上来就先new对象,表示很饥渴:
package com.jerry.java; public class Singleton1 { //1.先声明一个私有化构造器,防止直接创建该对象 private Singleton1() {} //2.直接下把对象创建好,使用静态变量 private static Singleton1 instance1 = new Singleton1(); //3.提供公共的静态方法,返回类的对象 public static Singleton1 getInstance1() { return instance1; } }
- 二、懒汉模式,不着急用,我就不着急造对象:
package com.jerry.java; //懒汉模式 public class Singleton2 { private Singleton2() {} //先把对象放着 private static Singleton2 singleton2 = null; // 有需要的时候,再去创建 private static Singleton2 getInstance() { if (singleton2 == null) { return new Singleton2(); } return singleton2; } }
懒汉式与饿汉式的优缺点:
懒汉式,线程不安全,因为存在多线程资源竞争问题。
懒汉式,好处是延迟对象的创建。
饿汉式,线程安全,因为静态对象在编译时只会创建一次。