怎么把网站放到阿里云,广州多少网络科技有限公司,浅谈网站页面框架设计,重庆学校网站建设Java单例模式的几种实现方式
在Java 中#xff0c;单例类只能有一个实例#xff0c;必须创建自己的唯一实例#xff0c;单例类必须给所有其他对象提供这一实例。Java 单例模式有很多种实现方式#xff0c;在这里给大家介绍单例模式其中的几种。分别是饿汉式#xff0c;懒…Java单例模式的几种实现方式
在Java 中单例类只能有一个实例必须创建自己的唯一实例单例类必须给所有其他对象提供这一实例。Java 单例模式有很多种实现方式在这里给大家介绍单例模式其中的几种。分别是饿汉式懒汉式Double CheckLock实现单例静态内部类。它们都有相互的优缺点。 适用场景 需要生成唯一序列的环境。 需要频繁实例化然后销毁的对象。 创建对象时耗时过多或者耗资源过多但又经常用到的对象。 方便资源相互通信的环境。 选择 单例对象占用资源少不需要延时加载枚举好于饿汉。 单例对象占用资源多需要延时加载静态内部类好于懒汉式。 一 饿汉式
线程安全调用效率高但是不能延时加载。
//实例化这个类
public class Singleton {private static final Singleton instance new Singleton();// 私有化构造器private Singleton(){} //创建静态工厂方法让外部可以获取实例public static Singleton getInstance(){return instance;}
}二 懒汉式
线程安全调用效率不高但是能够延时加载。
//类初始化时不初始化这个对象(延时加载真正用的时候再创建)
public class Singleton {private static final Singleton instance;// 私有化构造器 private Singleton(){} //方法同步调用效率低// 创建静态工厂方法 让外部可以获取实例public static synchronized Singleton getInstance(){if (instance null) {instance new Singleton();}}
}三 Double CheckLock实现单例
Double CheckLock 双重锁判断机制由于JVM底层模型原因偶尔会出问题不建议使用是在懒汉式单例基础上发展而来的。 public class Singleton {private volatile static Singleton instance; // 私有化构造器private Singleton(){ } //静态工厂方法,双重锁判断机制public static Singleton newInstance(){if (instance null) {synchronized (Singleton.class) {if (instance null) {instance new Singleton();} }}
return instance;}
}四静态内部类 线程安全调用效率高可以延时加载。
public class Singleton {private static class fw{private static final Singleton instance new Singleton();}// 私有化构造器private Singleton(){} //静态工厂方法public static Singleton getstance(){return fw.instance;}
}