网站网站制作多少钱,建站语言有哪些,机械加工网上订单怎么接,如何做好网站针对搜索引擎的seo一、单例模式的简单介绍
二、饿汉模式
三、懒汉模式
四、饿汉模式和懒汉模式的线程安全问题分析 一、单例模式的简单介绍
单例模式是一种设计模式#xff0c;其中设计模式是软性的规定#xff0c;与它关联的框架是硬性的规定#xff0c;这些都是大佬已经设计好了的…
一、单例模式的简单介绍
二、饿汉模式
三、懒汉模式
四、饿汉模式和懒汉模式的线程安全问题分析 一、单例模式的简单介绍
单例模式是一种设计模式其中设计模式是软性的规定与它关联的框架是硬性的规定这些都是大佬已经设计好了的即使是代码写的不是很好的菜鸡按照这种模式也能写出还行的代码。类似象棋中的棋谱即使你是新手但按着棋谱走你的棋力也不会太差。
单例 单个实例对象某个类在一个线程中只应该创建一个对象原则上不应该有多个这时就使用单例模式就可以对我们的代码进行一个更严格的校验和检查。
那么怎么保证这一个对象唯一呢
其一方法可以通过“君子约定”写一个文档规定这个类只能有唯一的实例新手程序猿接手这个代码时就会发一份这个文档进行约定熟悉其中的规定、条约。
其二方法可以让机器帮我们检查人肯定是没有机器靠谱的我们期望让机器帮我们对代码中指定的类创建类的实例个数进行检查、校验当创建的实例个数超过我们期望个数就编译报错这一点还是能实现的其中单例模式就是已经设计好的套路可以实现这种预期效果。 二、饿汉模式
饿汉模式是指创建实例是时期非常早在类加载的时候程序一启动就已经创建好实例了使用 “饿汉”这个词就是形容创建实例非常迫切非常早。下面实现一个单例模式 代码 class Singleton {private static Singleton instance new Singleton();public static Singleton getInstance() {return instance;}private Singleton(){ }
}
public class TestDemo4 {public static void main(String[] args) {}
} 当我们想在主线程中创建一个Singleton的实例时会报错如图 singleton类的代码解析 singleton内部第一行代码就是这个如图 这说明singleton内部一开始就创建好了实例创建实例非常迫切使用static修饰说明instance是类属性。 接下来是获取这个类的实例方法如图 因为我们不希望能创建出多个实例所以就把singleton的构造方法用private来修饰如图 这样如果我们想new一个Singleton对象也new不了但也有非正规手段去获取singleton里面的属性或方法反射。 最后不管我们用getInstance获取多少次实例获取的对象都是同一个对象验证如下 代码 class Singleton {private static Singleton instance new Singleton();public static Singleton getInstance() {return instance;}private Singleton(){ }
}
public class TestDemo4 {public static void main(String[] args) {Singleton s1 Singleton.getInstance();Singleton s2 Singleton.getInstance();System.out.println(s1 s2);}
}执行结果 三、懒汉模式 和饿汉模式不一样的是创建实例的时机比较晚没饿汉创建实例那么迫切只有第一次使用这个类时才会创建实例。 代码如下 class SingletonLazy {private static SingletonLazy instance null;public static SingletonLazy getInstance() {if(instance null) {instance new SingletonLazy();}return instance;}private SingletonLazy() { }
}
public class TestDemo5 {public static void main(String[] args) {}
}代码解析 一开始没有创建实例只是给singletonLazy赋值为null并没有new一个对象也就是没有创建实例首次调用getInstanceinstance是null的所以会new一个对象创建实例。如果不是第一次调用getInstance就直接返回instance这也保证了这个类的实例是唯一的只有一个实例 和饿汉模式的区别就是没那么迫切创建实例等需要调用这个类的时候才创建一个实例而饿汉模式是有了这个类就创建出实例。 懒汉模式的优点有的程序要在一定条件下才需要进行相关的操作有时候不满足这个条件也就不需要完成这个操作了这样就把这个操作省下来了而懒汉模式就是这一思想当需要这个实例时才创建实例。像肯德基的疯狂星期四只有在星期四的时候才会加载出相关信息其他时间就不会加载。 四、饿汉模式和懒汉模式的线程安全问题分析