六、单例模式+阻塞式队列+定时器+线 程池
一、设计模式(单例模式+工厂模式)
设计模式就是软件开发中的“棋谱”,软件开发中也有很多常见的 “问题场景”。针对这些问题场景,大佬们总结出了一些固定的套路。按照这些套路来实现代码可能不会很好,但至少不会很差。当前阶段我们需要掌握两种设计模式:(1)单例模式 (2)工厂模式
1、单例模式
> 概念/特征:单例模式能保证某个类在程序中只存在唯一一份实例, 而不会创建出多个实例。
Java中实现单例模式的方式有很多种,但他们本质上都是一样的,这里主要介绍两种,即 饿汉模式 和 懒汉模式。
在计算机中“懒”往往是褒义词,很多时候并不是实质意义上的懒,而是凸显一种“从容”。而“饿”凸显一种“急迫”。
> 比如计算机读取硬盘文件并显示,这个场景下对于饿汉模式:会把文件的所有内容全部都读取到内存中,一并显示。这种模式下,如果文件很大,可能导致内存不足或显示卡顿等问题。反而对于懒汉模式:不会一次读取完毕,而是每次只读取一部分,先将当前屏幕填充上,如果后续翻页在继续读取文件内容,这种模式下就大大提高了效率以及用户体验。
Java 中的多线程下的单例模式,可以借助 Java 语法,保证某个类,只能创建出一个实例 ,而不能 new 多次,具体实现如下:
(1)饿汉模式
代码实现:
// 饿汉模式实现单例
class Singleton {
// 唯一实例的本体
private static Singleton instance = new Singleton();
// 获取到实例的方法
public static Singleton getInstance() {
return instance;
}
// 禁止外部 new 实例(将构造方法私有化:类内可以使用,类外不能使用)
private Singleton() {
}
}
public class Test {
public static void main(String[] args) {
// 使用
Instance instance = Instance.getInstance();
//由于设置了私有的构造方法,所以这样写会报错
//Instance instance1 = new Instance();
}
}