目录
案例:
1.单例模式
2.阻塞队列
1.什么是单例模式
先来介绍一下设计模式,设计模式就类似于 棋谱 ,就是一种固定的套路,就比如下棋,某些特定的场景按照棋谱的方法去下棋总是不会让自己下的太烂,而写代码也是如此,在我们写代码过程中进程会遇到很多的经典场景,也就有一些经典场景的应对手段,一些人就把这些手段给收集整理起来,起了一个名字叫做 设计模式
单例模式就是设计模式的一种,在单例模式中我们要求类中只能有一个实例,不能有多个,这种单例模式在实际开发中是非常常见的一种模式,也是非常有用的!
单例模式一共有两种典型形式:
1)饿汉模式
2)懒汉模式
2.饿汉模式
类加载的时候直接创建出实例
class Singleton{
//使用static来创建一个实例
//instance实例就是该类的唯一一个实例
private static Singleton instance = new Singleton();
//为了防止在其他地方new Singleton,将构造方法设置为private
private Singleton(){}
//3.提供一个方法让外面能拿到这唯一的实例
public static Singleton getInstance(){
return instance;
}
}
3.懒汉模式
类加载的时候不会创建出实例,什么时候用才会创建出实例
//实现单例模式的懒汉模式
class Singleton2{
//1.不是立即初始化实例
private static Singleton2 instance = null;
//2.提供一个private的构造方法
private Singleton2(){}
//3.提供一个方法来获取到上述的实例,只有用到的时候才会去创建
public static Singleton2 getInstance(){
if(instance == null){
instance = new Singleton2();
}
return instance;
}
}
在计算机中,我们用的最多的是懒汉模式,不要被字面意思所迷惑,什么时候用什么时候创建可以大大的提高效率,而饿汉模式一股脑的就在类加载的时候就创建出实例,也不管我们到底需不需要实例
然而上述懒汉模式的实现并不是线程安全的