单例的目的:保证一个类只有单一的实例,也就是说你无法通过new来创建这个类的一个新实例。
单例的好处:当一个对象在程序内部只能有一个实例的时候,它可以保证我们不会重复创建,而是始终指向同一个对象。
Singleton通过将构造方法限定为private避免了类在外部被实例化,在同一个虚拟机范围内,Singleton的唯一实例只能通过getInstance()方法访问。
各自的优缺点:
第一种饿汉式:
优点:在类加载初始化的时候就创建对象,调用getInstance的时候,没有同步方法,运行时性能较高。
缺点:类加载速度慢,占用太多大的资源空间。从加载到应用结束会一直占用资源
第二种懒汉式:
优点:避免了第一种方式的缺点, 同时,可以在多线程下运行安全。在整个应用的生命周期只有一部分时间在占用资源
单例的好处:当一个对象在程序内部只能有一个实例的时候,它可以保证我们不会重复创建,而是始终指向同一个对象。
Singleton通过将构造方法限定为private避免了类在外部被实例化,在同一个虚拟机范围内,Singleton的唯一实例只能通过getInstance()方法访问。
各自的优缺点:
第一种饿汉式:
优点:在类加载初始化的时候就创建对象,调用getInstance的时候,没有同步方法,运行时性能较高。
缺点:类加载速度慢,占用太多大的资源空间。从加载到应用结束会一直占用资源
第二种懒汉式:
优点:避免了第一种方式的缺点, 同时,可以在多线程下运行安全。在整个应用的生命周期只有一部分时间在占用资源
缺点:因为他使用了锁,在运行中效率慢。