大家时候了解线程安全的单例模式有哪几种呢?通常我们都知道单例模式分为饿汉模式和懒汉模式?今天小编给大家来讲解下,接下来让我们一起来了解下吧。
单例模式是常见的设计模式之一:
单例模式有如下三个优点:
1.控制资源的使用,通过线程同步来控制资源的并发访问
2.控制实例的产生个数,来达到节约资源的目的
3.作为通信媒介使用,在不建立连接的情况下,让两个不先关的进程和线程之间实现通信
单例模式分类:
饿汉模式(在类加载时便会创建对象);
懒汉模式(在外部第一次请求实例时才会创建实例);
登记式模式
前两者都是常用的。
单例模式特点:
1.单例类只有一个实例
2.单例类必须自己创建自己唯一的实例
3.单例类必须自己给其他类提供这一实例
1.懒汉模式:类加载时不会初始化,当外部第一次请求实例时才会创建实例;而且第一次创建后不在创建该实例;
特点是:运行时获取对象的速度比较慢,但加载的时候比较快,它在整个生命的应用周期只占用一部分资源
//单例模式-懒汉式单例 public class LazySingleton { //私有静态对象,加载时候不做初始化 private static LazySingleton jjy=null; // 私有构造方法,避免外部创建实例 private LazySingleton(){} /** * 静态工厂方法,返回此类的唯一实例. * 当发现实例没有初始化的时候,才初始化. * @return LazySingleton */ synchronized public static LazySingleton getJjy() { if (jjy == null) { jjy = new LazySingleton(); } return jjy; } }
2.饿汉模式:类加载时就会初始化,创建实例;
特点是:运行时获取对象速度比较快,但加载时速度比较慢,会一直占用资源
//单例模式-饿汉式单例 public class EagerSingleton { //私有静态对象,加载时候不做初始化 private static EagerSingleton jjy = new EagerSingleton(); // 私有构造方法,避免外部创建实例 private EagerSingleton() {} /** * 静态工厂方法,返回此类的唯一实例. * * */ synchronized public static EagerSingleton getJjy() { return jjy; } }
以上就是今天所讲的内容,更多java常见问答知识想要了解,请继续关注本网站。
推荐文章: