在系统中为节省资源,保证数据内容一致,会定义某些类,一个类只能创建一个实例对象,称之为单例模式。
单例模式特点:
1、单例类只能有一个实例
2、单实例必须有单例类自行创建
3、单例类提供一个全局的访问单实例的方法
通常来说普通类,通过new构造函数创建多个实例对象,但是如果类的构造函数变成了私有,就无法通过new 来创建多个对象,由此该类会对外提供一个静态的共有方法给外部访问该类的静态实例对象。
单例模式实现有两种方式,一、懒汉式;二、饿汉式
一、懒汉式-单例模式
在类加载时,不会创建实例对象,只有当在第一次调用get方法时才会的创建实例对象
volatile 和 synchronized 保证单例在多线程中起到线程安全,由于是线程同步,因此性能上会消耗更多的资源。
二、饿汉式-单例模式
在该类一旦被加载就会创建一个实例对象,并保证在调用get方法获取实例方法之前已经创建了实例对象。创建出来的是 static final 修饰的实例对象,所以是线程安全的。
单例模式在系统中应用,当某个对象频繁的被实例化,然后频繁被回收,将造成资源消耗,过多的实例对象占用内存空间。因此可通过单例实例化一个对象,被所有线程共享,减少资源消耗。或者实例化一定数量的实例对象放在一个线程池中,例如数据库连接池,web网络链接池。
原文:https://www.cnblogs.com/zhaiMaoDou/p/13369416.html