标签:静态方法 一个 内存 线程安全 延迟 对象 类对象 turn media
单例模式有两种设计:
举例1.
/** * 延迟加载(懒汉式) * 1.私有构造方法 * 2.创建本类对象,但不初始化 * 3.创建静态方法进行初始化对象并返回 * * 优点: * 使用到类的对象才会加载,不消耗内存 * 缺点: * 可能会出现线程安全问题,但是可以使用同步代码块消除这个安全问题 * */ public class SingleExample { private SingleExample(){} // 创建本类对象,不初始化 private static SingleExample instance ; private static SingleExample getInstance(){ if (instance == null) { // 同步代码块 synchronized (SingleExample.class) { if (instance == null) { instance = new SingleExample(); } } } return instance; } public static void main(String[] args) { System.out.println("1." + SingleExample.getInstance()); System.out.println("2." + SingleExample.getInstance()); System.out.println("3." + SingleExample.getInstance());// 均是同一个对象,在同一个内存中 } }
举例2.
/** * 立即加载(饿汉式) * 1.私有构造方法 * 2.创建本类的对象并初始化(私有的) * 3.创建静态方法获取本类对象 * * 优点: * 保证的线程的安全,没有线程安全问题 * 缺点: * 使用类就会加载,比较消耗内存 */ public class ImmediateSingle { private ImmediateSingle(){} private static ImmediateSingle instance = new ImmediateSingle(); public static ImmediateSingle getInstance(){ return instance; } }
标签:静态方法 一个 内存 线程安全 延迟 对象 类对象 turn media
原文地址:https://www.cnblogs.com/xiao-apple36/p/13097847.html